C - 奇怪的2d数组指针行为

时间:2014-02-24 17:34:15

标签: c arrays

将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 ++命令行编译器

3 个答案:

答案 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++){