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);
}
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.
#include<stdio.h>
main()
{
struct xx
{
int x=3;
char name[]="hello";
};
struct xx *s;
printf("%d",s->x);
printf("%s",s->name);
}
Answer:
Compiler
Error
Explanation:
You
should not initialize variables in declaration
18.
#include<stdio.h>
main()
{
struct xx
{
int
x;
struct yy
{
char s;
struct xx *p;
};
struct yy *q;
};
}
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.
main()
{
printf("\nab");
printf("\bsi");
printf("\rha");
}
Answer:
hai
Explanation:
\n - newline
\b - backspace
\r - linefeed
20.
main()
{
int i=5;
printf("%d%d%d%d%d%d",i++,i--,++i,--i,i);
}
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.
No comments:
Post a Comment