c语言+指向指针变量的指针变量,C语言一级指针变量为什么不允许指向一级指针变量的地址...

之所以说一级指针变量不能指向一级指针地址,我认为原因有两个,

第一,类型大小不匹配。(这个当然可以通过强制类型转换,不过不是全部都可以)类型的作用是表示地址开始后读取几个字节,char是1个,int是4个,double是8个,必须要类型大小匹配才行,指针的地址是4个字节,double

*占有8个字节,char * 占有1个字节,int *占有4个字节。例如:

char n = 22;

char *p = &n;//取N的地址,到指针变量

int *a = (int *)&p;//这样的类型大小是匹配的

但是,由于下面的第二个原因,所以这个怎么用就要想想了

第二,访问深度不够。我们从二级指针的地址开始,有层层递进的深度:

二级指针地址-》二级指针内容(一级指针地址)-》一级指针内容(变量地址)-》变量

使用指针,我们的目的是为了间接的去修改变量的值,一级指针也能成功指向一级指针的地址,但是却最多到达的深度是变量的地址这一级别,不能更深的去访问变量,那么这个一级指针去指向一级指针地址,就没有什么实际意义,就如同数学上不能去除以0一样的,不是不能除,是除了也没有意义,再加上匹配的范围小,也就有了这种不能指向的说法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值