我们如何使用指向数组的指针访问二维数组的内容

时间:2012-01-04 10:45:09

标签: c pointers

我有一个2-D数组,我想使用指向数组的指针访问此数组的特定元素,如下所示

 main()
 {
  int a[][4]={{2 ,0 ,0 ,2},{41 ,0, 0, 9}};

  int (*p)[4]=a;
  printf("%d",*p[0]);
  }

这给了我Ist 1-d数组的第一个元素,但现在使用指向数组的指针访问1-d数组的第2个元素?

4 个答案:

答案 0 :(得分:1)

您可以像这样简单地访问2d数组的元素:

printf("%d", a[0][1]); /* prints second item of first array */

答案 1 :(得分:1)

a[x][y]汇编为*(a+x*4+y)

答案 2 :(得分:0)

使用相应的行号和列号访问元素。

如果你必须访问上面提到的二维数组中第一行的第二个元素, 然后你可以使用

的printf( “%d”,一个[2] [1]);

答案 3 :(得分:0)

int a[2][4]={{2 ,0 ,0 ,2},{41 ,0, 0, 9}};
int (*p)[4]=a;

for (i = 0; i < 2; i++)
    for (j = 0; j < 4; j++)
        printf("%d\n", p[i][j]);

您可以使用p访问数组元素,就好像它是a一样。 原因很简单,因为当您在值上下文中使用名称a时,其类型已经是int (*)[4],因此与p的类型相同。

请注意,C中的p[i][j]表单相当于*(*p + i) + j)