指针算术运算
指针算术运算
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int *p=arr;
*p=10;
p++;//??
*p=20;
printf("%d,%d\n",arr[0],arr[1]);
return 0;
}
p++如何设计?
①加1个字节 ②加1个单元格 ③加整个数组
①4字节=32位, 二进制对应2位,即4字节存放16个二进制数字
十六进制对应4位,即4字节存放8位十六进制数字
十进制的10转换成十六进制的a,即0x0000000a
小端:低地址放小数据 eg:PC
大端:低地址放大数据 eg:手机 ARM 网络
十进制的20转换成十六进制的14,即0x00000014
③不合理(存在除法问题)
② int *p;
p+1; //求4(sizeof(int)*1)字节
double *p1;
p1+1; //求(sizeof(double)*1)字节
即②加1个单元格合理
总结:指针加法需要调整,调整的权重是指针本身去掉一个*号,再求sizeof();
int *p; p+1; //求4(sizeof(int)*1)字节
double *p; p+1; //求(sizeof(double)*1)字节