一级指针和二级指针

一级指针和二级指针到底有本质区别吗?
我的理解是好像没啥本质区别,无非就是解引用时的大小问题。直接上代码就看懂了:

  • 图1中

    • 首先,argv, inputs1,inputs2的大小都是8字节(因为在64位系统中,地址类型是8字节)。接下分析inputs1和inputs2(因为argv和inputs1类型完全相同就不分析argv了)。
    • *inputs1的类型仍然是指针,所以大小是8字节;*inputs2的类型是char,所以大小是1字节。
    • inputs1=inputs2=0x7ffca35a1408,那么printf输出* inputs1的时候,会从0x7ffca35a1408处开始取8个字节输出;但输出* inputs2的时候只会取一个字节输出(高位补符号位)。
  • 图2中

    • 同图1一样,只不过将inputs2类型改为long long* 了,这样* inputs2的大小就是8B,那么printf输出* inputs2的时候,会从0x7ffca35a1408处开始取8个字节输出,结果和输出* inputs1一样。

图1
图1

图2图2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值