首先让我们先来看下图
想想答案过后
让我们来分析
****在1中
p表示一个指针,sizeof(p)则是要计算一个指针的大小,
指针大小在32位中是4个字节大小,而在64位中是8个字节大小(要特别注意这里的p不是数组名而是指针变量)
****在2中,
p表示的是指针,而p指针指向的地址是常量字符中的a,
如图所示,
而+1则是指向b的地址,地址在32位中是4个字节大小,而在64位中是8个字节大小
****在3中
p表示指针,其指向的为a,对其进行解引用则得到了元素a,而a为char类型,故大小为1
****在4中
P[0]与*(p+0)是等价的,即使p并不表示数组名,
但它等价于它指向的地址被解引用,即p[0]表示a,
而a为char类型,故大小为1
****在5中
p表示指针,&p则表示取出p的地址计算其大小,
我们知道地址在在32位中是4个字节大小,而在64位中是8个字节大小
****在6中
它将p的地址取出,并且将其+1
如下图
它就是将跳过了一个p的大小,因为p的大小8(在64位中)则它跳过了8个字节到达了新的地址,
地址在在64位中是8个字节大小,32位中是4个字节大小
****在7中
我们知道p[0]表示*(p+0)表示的是字符串中a的地址,
所以&p[0]则是取出了a的地址对其+1,
则跳过了一个a的大小,
如下图
它跳到了b的位置,地址在32位中是4个字节大小,而在64位中是8个字节大小
****最后附上64位的运算结果
ending.
标签:看过,字节,位中,地址,了解,64,大小,指针 From: https://www.cnblogs.com/CxstaR/p/18555379