我有一个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个元素?
答案 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)
。