指针+1
指针+1,是加一个单元格还是加一个字节呢,
先看一个程序:
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int *p = arr;
p++;//p = p + 1
*p = 10;
p++;
*p = 20;
printf("%d,%d\n",arr[0],arr[1]);
return 0;
}
这个程序通过编译结果为 1 10,这个结果说明p++后,arr[1]的值被更换为10.
所以指针+1就是加一个单元格,那为什么会是加一个单元格而不是一个字节呢?看一个图。
这个图是假设p++加一个字节,p++,*p=10 的地址赋值后(红色框),arr[0]=2561(蓝色框),显然这个值不是我们想要的结果。
所以指针+1,并非加一个字节,而是加一个单元格。
下面有几个题
指针的算术运算 +,-
指针+i,表示加i个单元格,其加 i * sizeof(指针本身去掉一个 * )字节
int main()
{
int *p = (int*)2000;
printf("%d