有以下关于指针的代码
int main()
{
int arr[]={1,2,3,4,5,6};
int *p=arr;
p++;
*p=10;
p++;
*p=20;
printf("%d,%d\n",arr[0],arr[1]);
return 0;
}
1、加整个数组
若加的为整个数组,数组也无法使用,所以指针+加的并不是整个数组
2、加一个字节
所以指针增加,加一个字节很麻烦,不这样使用
3、增加一个单元格
如下代码
int main()
{
int *p=(int *)2000;
printf("%d\n",p-2);//结果为:1992
printf("%d\n",(char *)p-2);//结果为:1998
printf("%d\n",(short *)p-2);//结果为:1996
printf("%d\n",(long long *)p-2);//结果为:1984
printf("%d\n",(float *)p-2);//结果为:1992
printf("%d\n",(double *)p-2);//结果为:1984
printf("%d\n",(int **)p-2);//结果为:1984
printf("%d\n",(unsigned long *)p-2);//结果为:1992
}
该指针的运算+1,表示加1个单元格,其运算规律为:
指针+i,表示加i个单元格,其加isizeof(指针本身去掉一个)字节