关于指针+1的一个知识点

int a[5] = {1,3,5,7,9};
int *ptr =(int*)(&a+1);
int b = *(ptr - 1);

以上代码运行结束后,b的值为9;

因为:

1)&a 后得到的值的类型为int (*)[5],是一个数组指针,其值加1,指针向后偏移的值为所指向指针数组所占内存的大小的值,即为20;

2)int *ptr = (int*)(&a+1);这行代码运行结束之后,ptr指向数组a最后一个元素的地址,加上4个字节的位置。

3)int b = *(ptr - 1);此时,由于ptr是int *类型的,所以ptr - 1,ptr所指位置向前移动4个字节,即指向了数组a中最后一个元素所在的内存。

总结:

1)此方法可用于找到数组的最后一个元素。

2)当一个指针加1时,指针移动的字节数,跟指针所指向的空间的大小有关。指向一个数组,他移动的量就是那个数组所占内存大小的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章