如题所述
C语言的数组(不管多少维)在内存中都是线性储存的。所以用一级指针加偏移就可以访问所有元素。
举个例子,有一个10*10的二维数组a,这样就可以输出:
int *p = (int *)a;
int i;
for (i = 0; i < 10 * 10; i++)
printf("%d", *(p + i));追问
大神,你可以直接告诉我如果一个指针是指向二维数组的首地址该怎么输出吗
追答上面的p就是指向二维数组的首地址(a),如果你是想用指向数组的指针来输出的话,这样写:
int a[10][10];int (*p)[10] = a;
int i, j;
for (i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
printf("%d", *(*(p + i) + j));
这个p是指针,指向一个存储10个整数的数组。
谢谢
温馨提示:答案为网友推荐,仅供参考