我不觉得指针理论特别麻烦,但我偶尔会被一些符号弄糊涂。在下面的例子中,有人能解释一下这条线是如何p = (int*) a
工作的。我对代码的解释表明,这一行只是将第一个数组的第一个元素的地址存储在指针 p 中,这样就可以printf("%u", *p)
产生5
. 如果是这样的话,这条线只是一种更间接的写作方式p = a[0]
吗?
int main()
{
int a[][4] = {
5, 7, 5, 9,
4, 6, 3, 1,
2, 9, 0, 6
};
int *p; // create an integer pointer
int (*q)[4]; // create a pointer to a four-element integer array
p = (int*)a; // ?
q = a;
printf("%u %u\n", p, q);
p++;
q++;
printf("%u %u\n", p, q);
return 0;
}