關於指針+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時,指針移動的字節數,跟指針所指向的空間的大小有關。指向一個數組,他移動的量就是那個數組所佔內存大小的值。

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