我在下面创建了一个代码,我需要跟踪一个数组,增加指向数组的指针,并在数组结束时停止。如果我的指针跨越数组边界会发生什么?
我使用下面的代码进行了测试,显然在增加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