【发布时间】:2017-06-12 03:03:06
【问题描述】:
当我对指针数组和指针数组感到困惑时,我想到了这个问题,尽管我现在已经弄清楚了如何从字面上区分它们。
但我仍然对编译器如何理解指针声明感到困惑。例如,有没有像int* 这样的类型?
int *p; // a common pointer declaration
具体来说,编译器是如何理解前一句的呢?先把p当作一个指针,然后找到指向的对象是int?或者查找用户声明了一个指向 int 的指针 int*,名为 p?
面对指向数组的指针时,我更加困惑。
int (*p)[4] //a pointer to an array of int[4]
这怎么理解?编译器是否将其视为int[4] *p(int[4] 像我们在容器中那样工作的新类型)?以下案例中的类似问题。
int *p[4] //an array-of-pointers
由于[]在*之前,编译器是否首先理解p[4]并将p视为一个数组(元素类型未知),然后将元素类型指定为int*?
【问题讨论】:
标签: c++ c pointers compiler-construction