C语言 char * 和 char[] 内存中区别(不完善,希望一起探讨)

在这里插入图片描述

一、char *

如图 char *a = "bc" 首先在内存中随机一个地址(这边是4218948)来存放'b','c'的话地址往后+4,
然后char *a 中的a是一个指针指向上面的随机地址(也就是4218948),最后来解释一下输出,

  • 输出a就是输出指针a指向的地址:4218948
  • 输出&a就是输出指针a存放在内存中哪个地方(a的地址)
  • 输出*a就是输出指针a指向的地址的内容(4218948里面保存了啥)
  • 输出*&a就是&a里保存了啥(当然还是a本身)

二、char []

这边还没搞明白 可能是对指针了解的还不够深
很奇怪的是b&b竟然是一样的,这说明了b指向的地址和存放b的地址是相同的,对比一下上面的char * 中是不同的
*b输出的是字符a的ASCII码 说明 b地址处(6422297处)存放的应该是97(的16进制)
但是&b也是 6422297
这说明一个地址存放了两个数据吗?感觉不可能 还是编译器做了特殊处理呢?
可能在编译器中b并不是一个指针 b就是一个地址 但6422297又该放在哪里呢

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值