看过这里,你可能更了解指针5

首先让我们先来看下图

想想答案过后

让我们来分析

****在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.

posted @ 2024-11-19 21:13  辰末之星  阅读(25)  评论(0)    收藏  举报