gpt4 book ai didi

c++ - 编译器如何理解指针和数组的声明

转载 作者:行者123 更新时间:2023-11-28 05:06:55 24 4
gpt4 key购买 nike

<分区>

当我对指向数组的指针和指针数组感到困惑时,我想到了这个问题,尽管我现在已经想出了如何从字面上区分它们。

但我仍然对编译器如何理解指针声明感到困惑。比如有没有int*这样的类型?

int *p;   // a common pointer declaration

具体来说,编译器是如何理解前一句的?先把p当作一个指针,然后发现指向的对象是int?或者发现用户声明了一个名为 p 的指向 int int* 的指针?

在面对指向数组的指针时,这让我更加困惑。

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*?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com