C - Operators - Discussion

You Are Here :: Home > C > Operators - Discussion

 



Q.

Find the output :

main()
{
char s[ ]="man";
int i;
for(i=0;s[ i ];i++)
printf("\n%c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]);
}

A. mmmm
mmmm
mmmm
B. mmmm
aaaa
nnnn
C. mmmm
aaaa
aaaa
D. mmmm
nnnn
nnnn

Answer: Option B
Explaination:

 


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].



Discussion

Your Comments Goes here...
NameDiscussion