I created a code below, where I need to keep track of an array, increase the pointer to array, and stop if the array ends.
I tested using the code below and apparently after 1000 iterations of increasing ptr and printing *ptr, I get 0 as a value.
So is it true the last element of array will ALWAYS be 0? How can I tell the ptr to stop at the last element, if the array length is created dynamicaly (and I am not allowed to use linked list instead)? I am afraid that if I use below code, one day I will meet printf i=1000 , and it returns me random memory location (sofar for the code below, it is not true, but who knows)..
#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;
}
No, this is just pure luck. You are reading from a random location in your memory, you could even end up in a segmentation fault, killing your program.
You should always make sure to not read/write over the boundaries of your array, or really bad things might happen (Segmentation faults may be the least bad one).
You can keep track of the number of items in your array by using:
sizeof(my_array)/sizeof(int)