Я создал код ниже, где мне нужно отслеживать массив, увеличивать указатель на массив и останавливаться, если массив заканчивается.
Я тестировал с использованием кода ниже и, по-видимому, после 1000 итераций увеличения ptr
и печати *ptr
, я получаю 0
как значение.
Так верно ли, что последний элемент массива ВСЕГДА будет 0? Как я могу сказать, что ptr останавливается на последнем элементе, если длина массива создается динамически (и мне не разрешено использовать только связанный список)? Я боюсь, что если я буду использовать ниже код, однажды я встречу printf я = 1000, и он вернет мне случайную ячейку памяти (sofar для кода ниже, это неверно, но кто знает).
#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;
}