I Have this C code snippet
int numbers[4]={1};
numbers[0]=1; numbers[1]=2; numbers[3]=3; numbers[10]=4;
printf("numbers: %d %d %d %d %d %d\n",numbers[0],numbers[1],numbers[3],numbers[6],numbers[10], numbers[5]) ;
The Output for this snippet produces :
numbers: 1 2 3 963180397 4 0
Well I have couple of questions
wont setting numbers[10] give an error as array is just of size 4 if not then why ( as it didn't give any error )
why printing numbers[6] gives garbage value whereas numbers[5] gives value of 0 ? shouldn't it also be a garbage value.
what effect does setting numbers[10] has i know it does not increases size of array but what does it do then?
Thanks in advance . PS i used GCC to compile the code!!
What you can do is this :
int empty[100];
int numbers[4]={1};
int empty2[100];
memset(empty, 0xCC, sizeof empty);
memset(empty2, 0xDD, sizeof empty2);
numbers[0]=1;numbers[1]=2;numbers[3]=3;numbers[10]=4;
printf("numbers: %d %d %d %d %d %d\n",numbers[0],numbers[1],numbers[3],numbers[6],numbers[10], numbers[5]) ;
Now you can understand what you are overwriting when accessing out of your numbers array
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With