我不认为指针理论有什么特别棘手的地方,但是有时候我会被一些符号搞糊涂。在下面的例子中,有人能解释一下 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;
}