您的位置:首页 > 其它

指针算术运算(指针 +- 数字,指针 - 指针)

2018-04-07 12:10 381 查看
指针 +- 数字  //  需要调整,调整的权重为sizeof(指针只去掉一个*)
指针+1:加一个单元格
首先要清楚占用字节数

char  1
short  2
int  4
long  4
long long  8
float  4
double  8
int main()
{
int *p = (int *)     //赋值2000(强行转换)
printf("%d\n",p+4);     //2016
printf("%d\n",(short *)p+4);     //2008
printf("%d\n",(double *)p+4);    //2032
printf("%d\n",(float **)p+4);    //2016
printf("%d\n",(unsigned short *)p+4);      //2008
printf("%d\n",(long *)p+4);              //2016
printf("%d\n",(char *)p+4);             //2004
printf("%d\n",(unsigned long long)p+4);           //2004

return 0;
}
指针+指针不成立,指针 - 指针成立
指针 - 指针   //  间隔的单元(非字节数)个数  
步骤:

算出字节数
除以调整的权重
int main()
{
int arr[10] = {1};
int *p = &arr[1];      //x+4
int *q = &arr[9];      //x+36
printf("%d\n",p-q);      //-8
printf("%d\n",q-p);      //8
printf("%d\n",(short *)q-(short *)p);      //16
printf("%d\n",(double *)q-(double *)p);    //4
printf("%d\n",(int ***)q-(int ***)p);      //8
printf("%d\n",(char **)q-(char **)p);      //8
printf("%d\n",(long)q-(long)p);            //32

return 0;
}
总结:指针的所有算数运算都需要调整,调整的权重为sizeof(指针只去掉一个*)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: