我在下面創建了一個代碼,我需要跟蹤一個數組,增加指向數組的指針,並在數組結束時停止。如果我的指針跨越數組邊界會發生什麼?
我使用下面的代碼進行了測試,顯然在增加ptr
和打印*ptr
1000次迭代後,我得到0
作爲值。
所以它是真的數組的最後一個元素將總是0?我怎麼能告訴ptr停在最後一個元素,如果數組長度創建dynamicaly(我不允許使用鏈接列表)?恐怕如果我使用下面的代碼,有一天我會遇到printf i = 1000,並且它返回給我隨機存儲器位置(對於下面的代碼,這是不正確的,但是誰知道)..
#include <stdio.h>
int my_array[] = {1,23,17,4,-5,100};
int *ptr;
int main(void)
{
int i;
ptr = &my_array[0]; /* point our pointer to the first
element of the array */
printf("value of ptr is %d\n", *ptr);
for(i=0; i<1000; i++){
ptr++;
}
printf("value of ptr is now %d", *ptr);
return 0;
}
自己
sizeof(my_array)/sizeof(int)
不是隨機的,只是未初始化或被別的東西初始化。 – hugomg