我有一个二维数组(int s[4][2]
),我创建了一个指针。
指针int (*p)[2]
现在被分配给for循环中第1行元素的地址。
for (int i = 0; i<4; i++)
p = &s[i];
现在,当我尝试使用解引用来编写数组元素数据时,我得到了错误的值。
printf ("%d \n", *p)
但是,如果我创建另一个指针并将其与前一个指针链接
int *ptr = p;
解引用指针,得到正确的值。
printf ("%d \n", *ptr)
当两个指针指向同一地址时,为什么一个指针(
p
)按预期工作,而另一个指针(ptr
)不返回预期值? 最佳答案
如果p
是指向数组的指针,则*p
是2个整数的数组(int[2]
)因此,不能打印这样的数组元素:
printf ("%d \n", *p);
要通过指针打印数组元素,需要执行以下操作:
printf ("%d \n", (*p)[0]); /* first element */
printf ("%d \n", (*p)[1]); /* second element */