Vidyalelo
C Programming · Q2

C Miscellaneous

Programming · C Programming · question 2

Q2

Determine Output: void main() char s[]="man"; int i; for(i=0; s[i]; i++) printf("%c%c%c%c ", s[i], *(s+i), *(i+s), i[s]);

A.
mmm nnn aaa
B.
mmmm nnnn aaaa
C.
Compiler Error
D.
None of These
Answer

Answer: Option D

Solution

Answer: Option D
Solution:
Correct Output : mmmm aaaa nnnn
s[i], *(i+s), *(s+i), i[s] are all different ways of expressing the same idea. Generally array name is the base address for that array. Here s is the base address. i is the index number/displacement from the base address. So, indirecting it with * is same as s[i]. i[s] may be surprising. But in the case of C it is same as s[i].