将2d数组传递给函数时遇到问题。看看代码 - :
#include<stdio.h>
void display(int (*arr)[3],int i,int j,int length,int breadth) {
for(;i<length;i++){
for(;j<breadth;j++){
printf("%d ",arr[i][j]);
}
printf("\n");
}
}
void main() {
int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};
display(arr,0,0,3,3);
}
当我运行此代码时,我只能打印出2D数组的第一行。但是当不使用形式参数中的i和j而是在 display()函数中将它们声明为局部变量时,一切正常。为什么我不能直接使用传递给函数的本地值? 我在Visual Studio 2013中使用 Visual C ++命令行编译器。
答案 0 :(得分:5)
你正在做什么,j什么时候重置为0?
答案 1 :(得分:0)
你错过了循环的临时变量:
int tj;
for(;i<length;i++)
{
for(tj=j;tj<breadth;tj++){
printf("%d ",arr[i][tj]);
}
printf("\n");
}
答案 2 :(得分:0)
j
需要在i
增加后初始化。
for(j=0;j<breadth;j++){