我声明并初始化了一个 2x2 数组,如下所示:
int arr[2][2] = {1, 2, 3, 4};
然后,一个指向整数的指针:
int *p1;
将指针初始化为:
p1 = arr[0]; //p1 points to {1, 2}
现在我可以使用 p1
作为 *p1
现在,当我声明时:
int (*ptr)[2][2];
ptr = &arr;
要打印元素,现在我必须使用:
printf("%d\n", *(**(ptr)+1));
这两个声明有什么区别?
最佳答案
int (*ptr)[2][2];
是指向 2x2 矩阵的指针,而不是指向 int
的指针。由于矩阵的每个维度的行为有点像指针,这就是为什么您需要在 printf
中进行额外的取消引用。
关于c - 这两个 C 声明有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33308786/