2d数组未在C中正确初始化

时间:2016-06-30 00:22:58

标签: c arrays pointers

我正在尝试用C创建一个2d数组。以下函数是辅助函数。但是,当我运行程序时,使用d = 5,我的输出应该是一个5x5矩阵,值从25减少到0.相反,我得到......

-86 -87 -88 -89 -90 
-91 -92 -93 -94 -95 
-96 -97 -98 -99 -26 
-27 -28 -29 -30 -31 
-32 -33 -34 -35 -36

为什么?

int* init()
{
    int arr[d][d];
    int* p;
    p = &arr[0][0];
    int r;
    int c;
    int place = 0;
    int num = d*d;
    for (r=0;r<d*d;r++)
    {   
       for (c=0;c<d;c++)
       {
           *(p + place) = num;
           num--;
           place++;
       }
    }
    return p;
}

void draw(int* p)
{   
    int r;
    int c;
    int num = 0;
    for (r=0;r<d;r++)
    {
        for (c=0;c<d;c++)
        {
            printf("%i ",*(p+num));
            num++;
        }
        printf("\n");
    }
}

0 个答案:

没有答案