Arjun Suresh (talk | contribs) (→Solution) |
Arjun Suresh (talk | contribs) (→What's the output?) |
||
| Line 6: | Line 6: | ||
char *p; | char *p; | ||
p = (char*)arr; | p = (char*)arr; | ||
| − | + | printf("%d ", *p); | |
| − | printf(" | ||
p = p+1; | p = p+1; | ||
| − | + | printf("%d\n", *p); | |
| − | printf(" | + | |
return 0; | return 0; | ||
} | } | ||
| Line 25: | Line 24: | ||
(D) Garbage value | (D) Garbage value | ||
| − | |||
===Solution=== | ===Solution=== | ||
<syntaxhighlight lang="c"> int main() {
int arr[3] = {2, 3, 4};
char *p;
p = (char*)arr;
printf("%d ", *p);
p = p+1;
printf("%d\n", *p);
return 0;
}
</syntaxhighlight>
(A) 2 3
(B) 2 0
(C) 1 0
(D) Garbage value
Assume start location of arr s 1000. So, the first two elements of the array will be stored in memory as follows:
1000: 0 0 0 0 0 0 0 2 (hexa decimal representation and assuming int takes 4 bytes) 1004: 0 0 0 0 0 0 0 3
Now, %d, *p will print the first 4 bytes starting at 1000, that is 2. When p is incremented, it will go to 1001, as p is a char pointer.
1001: 0 0 0 0 0 0 0 0
So, output will be 0.
<syntaxhighlight lang="c"> int main() {
int arr[3] = {2, 3, 4};
char *p;
p = (char*)arr;
printf("%d ", *p);
p = p+1;
printf("%d\n", *p);
return 0;
}
</syntaxhighlight>
(A) 2 3
(B) 2 0
(C) 1 0
(D) Garbage value
Assume start location of arr s 1000. So, the first two elements of the array will be stored in memory as follows:
1000: 0 0 0 0 0 0 0 2 (hexa decimal representation and assuming int takes 4 bytes) 1004: 0 0 0 0 0 0 0 3
Now, %d, *p will print the first 4 bytes starting at 1000, that is 2. When p is incremented, it will go to 1001, as p is a char pointer.
1001: 0 0 0 0 0 0 0 0
So, output will be 0.