C/C++ 中指针的本质(2)——指针之高级篇

 

【指针之高级篇】

基于上篇的理解,再继续深入学习下指针。

1.    指向指针的指针

既然指针也是占据内存空间的,那指针也就是有地址的了,那么对于指针的地址又是存放到哪里呢?——指向指针的指针。

首先假设程序中有这样一个变量:int weight = 60;

那么指向该int类型数据的指针的定义:int *pWeight = &weight;

指向pWeight的指针(指向指针的指针)定义:int **ppWeight = &pWeight;

ppWeight 就是指向了一个指针的指针,它本质还是一个指针,那么它仍旧是占用4个字节内存,这4个字节内存中存放着pWeight的首地址,知道了这些,那么指针的指针的指针也就一次类推即可。

2.    指针和数组名的关系

这个问题老生常谈,其实他们之间没有本质的联系,只不过从使用方法上看非常类似,故有了一批批前仆后继者比对进行研究,因为还是总有很多童鞋在这里有疑惑,这里简单说明下:

假设程序中定义了:

Int array[5] = {1, 2, 3, 4, 5};

Int *pArray = &array[0];

那么,

a.    数组名array本身没有专门内存来存储,他是依附于数组而存在的,是数组的一个名字;而指针是系统的一个专门的数据类型,指针变量pArray是有内存来存储的;

b.    具体在使用其进行内存寻址的时候则基本是一样的,按照定义pArray指向了数据array的首地址也就是首个元素的首地址&

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值