例:
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
&a+1不是首地址加一,系统会认为加一个a数组的偏移,是偏移了一个数组的大小
ptr是&(a[5]),也就是a+5;
指针加一要根据指针类型加上一定的值,不同类型的指针加一之后增加的大小不同。a是长度为5的int 数组指针,所以要加5*sizeof(int*);
因为ptr与(&a+1)类型不一样,a是数组首地址,&a是对象(数组)首地址。ptr-1只会减sizeof(int*)
例:
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
&a+1不是首地址加一,系统会认为加一个a数组的偏移,是偏移了一个数组的大小
ptr是&(a[5]),也就是a+5;
指针加一要根据指针类型加上一定的值,不同类型的指针加一之后增加的大小不同。a是长度为5的int 数组指针,所以要加5*sizeof(int*);
因为ptr与(&a+1)类型不一样,a是数组首地址,&a是对象(数组)首地址。ptr-1只会减sizeof(int*)