指针的

当我们遇到指针++的情况时,我们可能会有联想到三种情况:
第一种:加一个字节
第二种:加一个格子(4个字节)
第三种:加一个数组
那么到底是属于哪种情况呢,我们来做以下分析:
输入一段代码
#include<stdio.h>
int main()
{
int arr[10]={1,2,3};
int *p=arr;
p++;
*p=10;
printf("%d %d\n",arr[0],arr[1]);
return 0;
}
1.如果是第三种情况,加一个数组,p++就直接加到了本数组结束位置,但是本操作是对数组内部数据的操作,所以这种推测错误。
2.如果是第一种情况,加一个字节,由于一个指针占4个字节。那么如图,把有色方框放大得到。
十进制 1 转成十六进制为 ox1 ox00000001
同理 2 转成十六进制为 ox2 ox00000002
101转成十六进制为 oxa ox0000000a
因为PC为小端(低地址放小数据),所以将图中每一个地址赋值为,如图所示(赋值用黑色标记写在图下方)
进行了
p++操作后的值如图所示(赋值用红色标记写在图中)
所以arr[1]=ox000000a010=2561!=10
3.综上所述:指针++是指的是加一个格子(四个字节)在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43412060/article/details/83388230