这是指针的运算,代表指针p存储的地址向内存中的高位移动一个步长,而步长的长度与指针定义时的类型有关.如果是int类型指针,那么步长就是4个字节,double类型的指针其步长为8个字节.如果是数组类型的指针,则一个步长等于数组长度乘以数组元素的类型.
例如
int a = 1;
int *p = &a;
我们假设,a的地址是0xabc100,那么p存储的地址就是0xabc100,则p+1就是a的地址向高位移动一个步长(4个字节),那么p+1的地址就是0xabc104.
又如
int arr[3] = {1,2,3,4};
int (*p)[3] = &arr;
这个指针是一个int数组类型的指针,p存储的是整个数组的地址(&arr),我们假设这个数组的地址是0xabc200,那么p+1的意思是这个数组的地址向高位移动一个步长,这个步长的长度为20个字节(既数组长度3 * 数组元素类型占用的字节4),则p+1的地址是0xabc212. |