数组指针和二维数组的问题
本帖最后由 1613551 于 2022-5-13 16:27 编辑小甲鱼这个程序我没完全懂,第六行的 int (*p),是一个指向带有三个元素的数组的指针,然后array的地址也是指向带有三个元素的数组的指针,把array赋值给p,不是应该是把0, 1, 2赋值给了p,而后面的3、4、5没赋值过去吗?而这个程序的第11行也就是
printf("*(*(p+1)+2): %d\n", *(*(p+1)+2));,却也可以和第12行和第13行一样打印出5
#include <stdio.h>
int main()
{
int array = {{0, 1, 2}, {3, 4, 5}};
int (*p) = array;
printf("**(p+1): %d\n", **(p+1));
printf("**(array+1): %d\n", **(array+1));
printf("array: %d\n", array);
printf("*(*(p+1)+2): %d\n", *(*(p+1)+2));
printf("*(*(array+1)+2): %d\n", *(*(array+1)+2));
printf("array: %d\n", array);
return 0;
} 难道我应该理解为array是把自己的地址赋值过去,所以p顺着这个地址也能打印出这个值? 1613551 发表于 2022-5-13 16:28
难道我应该理解为array是把自己的地址赋值过去,所以p顺着这个地址也能打印出这个值?
理解的没错
页:
[1]