我们先来看一段代码:
int arr[10] = {1,2,3};
int *p = arr;
p++;
*p = 10;
这段代码里就包含了一个重要的知识:指针+1;
我们来分析一下指针+1在分配地址时会出现什么情况:
1、加一个字节;
2、加一个单元格;
3、加一个数组。
目前能想到的也就这么多了,我们一个一个来说其可能性。
首先是3、加一个数组,也就是指针直接从arr[0]->arr[9],而我们的目的是将arr[1]通过指针+1然后解引用变成10,直接加一个数组好像并不能实现这个功能。
所以我们pass掉这个选项:
1、加一个字节;
2、加一个单元格;
3、加一个数组。
接下来我们看看一次加一个字节:
整型数组的一个字节是4,我们假设指针++之后是加一个字节,那么我们把地址放大之后: