#include<stdio.h>
#include<stdlib.h>
struct keyVal
{
int key;
int val;
};
int main()
{
struct keyVal *arr[5];
int i;
for(i=0;i<5;i++)
printf("\n : %p %p ",&arr[i][0].val,&arr[i]);
printf("\n\n");
printf("\n : %d %d ",arr[0][0].val,arr[0]->val);
printf("\n\n");
for(i=0;i<5;i++)
printf("\n : %d %d ",arr[i][0].val,arr[i]->val);
printf("\n\n");
return 0;
}
First, for( ; ; );
will generate same %p %p
from arr[0][0]
to arr[4][0]
and arr[0]
to arr[4]
, which means arr[i][0] == arr[i]
where i = 0,1,2,3,4
.
Second for( ; ; );
should print values(garbage value) of arr[i][0].key
(arr[i]->key
).
We can access key by doing:
arr[i][0].key
OR arr[i]->key
where i = 0,1,2,3,4
.