哦,我随手写的,是写错了。应该是 int *q = b; 数组名就是它的首地址,不能再取了。
如果你非想取的话,应该是 int (*q)[5] = &b;
这个这么想。q = &b 的话,那么 *q 应该是个数组。如果我想通过 q 间接取那个数组的比如第3个元素,是不是应该是 (*q)[3] 这样?所以 q 的声明就是 int (*q)[5]。
指针的语法是非常复杂的。应该尽量减少使用。如果非有要用的时候,最好使 typedef 化简:
如果你非想取的话,应该是 int (*q)[5] = &b;
这个这么想。q = &b 的话,那么 *q 应该是个数组。如果我想通过 q 间接取那个数组的比如第3个元素,是不是应该是 (*q)[3] 这样?所以 q 的声明就是 int (*q)[5]。
指针的语法是非常复杂的。应该尽量减少使用。如果非有要用的时候,最好使 typedef 化简:
typedef int array[5]; array b; array *q = &b;会更清楚些。不仅不容易写错,而且可读性也更高。