一、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又该放在哪里呢