1613551 发表于 2022-5-13 16:27:36

数组指针和二维数组的问题

本帖最后由 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;
}

1613551 发表于 2022-5-13 16:28:31

难道我应该理解为array是把自己的地址赋值过去,所以p顺着这个地址也能打印出这个值?

风车呼呼呼 发表于 2022-5-13 17:14:18

1613551 发表于 2022-5-13 16:28
难道我应该理解为array是把自己的地址赋值过去,所以p顺着这个地址也能打印出这个值?

理解的没错
页: [1]
查看完整版本: 数组指针和二维数组的问题