指针的指针

先考虑下面这些声明:

int a = 12;
int *b = &a;

假如又有第三个变量C,并对下面语句进行初始化:
c = &b;

那么c的类型是什么?

显然,它是一个指针。


但它所指向的是什么?

变量b是一个“指向整型的指针”,所以任何指向b的类型必须是“指向整型的指针”更通俗的说是指针指针的指针。

指针变量和其它变量一样,占据内存中某个特定位置,所以用&操作符取得它的地址是合法的。


那么指针的指针要怎么声明?

int **c;
表达式int **c的类型是int,下图示例有助于我们弄清这个概念:
int a = 12;
int *b = &a;
int **c = &b;

对int **c的一些分析:

操作符具有从又到左的结合性,所以这个表达式相当于(c)我们必须从里向外逐层求值。c访问c所指向的位置,我们知道这是指向变量b,
括号外的*间接访问操作符访问这个这个位置所指向的地址,也就是变量a。


END!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容