指针的简单运算
程序员文章站
2022-06-23 13:38:13
...
一.指针加(减)数字
指针+(-) 1,指针向前(向后)移动一个单元格
指针加(减)数字,指针需要调整,而调整的权重为:数字*sizeof(指针去掉一个*)
int arr[10]; 假设arr首地址为x
int *p=&arr; //p==&arr[0] p==x;
p++; //p==&a[1] p==x+1*sizeof(int)
例:
加法练习:
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 *p = (int *)0x2010; //这是十六进制
printf("%x\n",p-2);//2008
printf("%x\n",(short *)p-2);//200c
printf("%x\n",(unsigned long *)p-2);//2008
printf("%x\n",(long long **)p-2);//2008
printf("%x\n",(float *)p-2);//2008
printf("%x\n",(double *)p-2);//2000
printf("%x\n",(char *)p-2);//200e
printf("%x\n",(unsigned long )p-2);//200e
return 0;
}
二.指针+指针无意义,这里不再多提
三.指针-指针:表示两个指针之间的格子数(有正负)
计算两个指针之间的格子数:
1.算出两个指针之间的字节数
2.除以每一个格子的大小
练习:
int main()
{
int arr[10] = {1};//假设arr首地址为x
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;
}
上一篇: 黑鲨4和iqoo7区别大吗 黑鲨4和iqoo7对比介绍
下一篇: 那些经典的令人作呕的电影演绎方式