我声明并初始化了一个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));
这两个声明之间有什么区别?
答案 0 :(得分:1)
int (*ptr)[2][2];
是指向2x2矩阵的指针,而不是指向int
的指针。由于矩阵的每个维度都有点像指针,因此您需要在printf
中进行额外的解除引用。