Wednesday, 11 June 2014

#10. Concepts in C -- only through Examples & Explanations

This is a continuation of last post. 

Before seeing the answer try to predict it & then see the explanation.

All the Best!!

16. #include<stdio.h>
main()
{
int a[2][2][2] = { {10,2,3,4}, {5,6,7,8} };
int *p,*q;
p=&a[2][2][2];
*q=***a;
printf("%d----%d",*p,*q);
}

17. #include<stdio.h>
main()
{
struct xx
{
int x=3;
char name[]="hello";
};
struct xx *s;
printf("%d",s->x);
printf("%s",s->name);
}

18. #include<stdio.h>
main()
{
struct xx
{
int x;
struct yy
{
char s;
struct xx *p;
};
struct yy *q;
};
}

19. main()
{
printf("\nab");
printf("\bsi");
printf("\rha");
}

20. main()
{
int i=5;
printf("%d%d%d%d%d%d",i++,i--,++i,--i,i);
}
======================================================
16.
Answer:
SomeGarbageValue---1

Explanation:
p=&a[2][2][2] you declare only two 2D arrays, but you are trying to access
the third 2D(which you are not declared) it will print garbage values. *q=***a starting address
of a is assigned integer pointer. Now q is pointing to starting address of a. If you print *q, it will

print first element of 3D array.

17.
Answer:
Compiler Error
Explanation:
You should not initialize variables in declaration

18.
Answer:
Compiler Error
Explanation:
The structure yy is nested within structure xx. Hence, the elements are of yy
are to be accessed through the instance of structure xx, which needs an instance of yy to be
known. If the instance is created after defining the structure the compiler will not know about
the instance relative to xx. Hence for nested structure yy you have to declare member.

19.
Answer:
hai
Explanation:
\n - newline
\b - backspace
\r - linefeed

20.
Answer:
45545
Explanation:
The arguments in a function call are pushed into the stack from left to right.
The evaluation is by popping out from the stack. and the evaluation is from right to left,
hence the result.

========================================================

Thanks for coming till this point!!
VSG
SQL DBA

No comments:

Post a Comment