本帖最后由 TTsu 于 2015-9-6 02:07 编辑
是不是感觉这些+1 +1的对学习指针来有所困扰,我下面的方法让你告别死记硬背.
首先假设一个int类型一维数组arr[4], arr的地址是0x00; 那么arr +1是多少呢?
arr是这个数组首元素地址==&arr[0], 心得就是 无论&什么什么+1 就是&符号后面的内容占据的地址单元数+指针起始位置 arr[0]占据4地址单元
所以arr +1 == &arr[0]+1 =4+0x00=0x04; 而 &arr+1 = 0x10; 这里&后面arr是个数组名就可以当成是arr这整个数组占据的地址单元数+地址.它占据16个地址单元 &arr+ 1=16+ 0x00= 0x10.一维数组中各元素也是如此,arr[0]+1等于 arr[1]同样适用,arr[0]是int 类型在内存中占用四个字节,所以+1也是跳到第5个字节就是arr[1]的字节那儿,所以就是arr[1]了
二维数组指针也是一样的,心得就是这样,但愿arr+1 &arr[0]+1等等这些指针到底变动多少不会在困扰你引子源自宿舍大神0826iossunzhen的个人心得,我再次基础上稍微扩展补充
|