Question 1
#include "stdio.h"
int main()
{
struct {int a[2];} arr[] = {{1},{2}};
printf("%d %d %d %d",arr[0].a[0],arr[0].a[1],arr[1].a[0],arr[1].a[1]);
return 0;
}
Question 2
Choose the correct output from the options given below:
#include‹stdio.h›
int main()
{
struct site
{
char name[] = "GeeksQuiz";
int no_of_pages = 200;
};
struct site *ptr;
printf("%d ", ptr->no_of_pages);
printf("%s", ptr->name);
getchar();
return 0;
}
200 GeeksQuiz
200
Runtime Error
Compiler Error
Question 3
Pick the best statement for the below program snippet:
struct {int a[2];} arr[] = {1,2};
No compile error and it’ll create array arr of 2 elements. Each of the element of arr contain a struct field of int array of 2 elements. arr[0]. a[0] would be 1 and arr[1].a[0] would be 2.
No compile error and it’ll create array arr of 2 elements. Each of the element of arr contain a struct field of int array of 2 elements. arr[0]. a[0] would be 1 and arr[0].a[1] would be 2. The second element arr[1] would be ZERO i.e. arr[1].a[0] and arr[1].a[1] would be 0.
No compile error and it’ll create array arr of 1 element. Each of the element of arr contain a struct field of int array of 2 elements. arr[0]. a[0] would be 1 and arr[0].a[1] would be 2.
None of the above
Question 4
Which of the following operators can be applied on structure variables?
Equality comparison ( == )
Assignment ( = )
Both of the above
None of the above
Question 5
Consider the following C declaration
struct {
short s[5];
union {
float y;
long z;
}u;
} t;
Assume that objects of the type short, float and long occupy 2 bytes, 4 bytes and 8 bytes, respectively. The memory requirement for variable t, ignoring alignment considerations, is (GATE CS 2000)
22 bytes
14 bytes
18 bytes
10 bytes
Question 6
Consider the following C declaration
struct
{
short s[5];
union
{
float y;
long z;
}
u;
}t;
Assume that the objects of the type short, float and long occupy 2 bytes, 4 bytes and 8 bytes, respectively. The memory requirement for variable t, ignoring alignment consideration, is
22 bytes
18 bytes
14 bytes
10 bytes
Question 7
Consider the following declaration :
struct addr {
char city[10];
char street[30];
int pin ;
};
struct {
char name[30];
int gender;
struct addr locate;
} person , *kd = &person ;
Then *(kd -> name +2) can be used instead of
person.name +2
kd -> (name +2 )
*((*kd).name + 2 )
either (A) or (B), but not (C)
Question 8
Pick the best statement for the below program:
#include <stdio.h>
int main()
{
union {
int i1;
int i2;
} myVar = {.i2 = 100};
printf("%d %d", myVar.i1, myVar.i2);
return 0;
}
Compile error due to incorrect syntax of initialization.
No compile error and it’ll print “0 100”.
No compile error and it’ll print “100 100”.
Question 9
Pick the best statement for the below program:
#include <stdio.h>
int main()
{
struct {
int i;
char c;
} myVar = {.i = 100, .c = 'A'};
printf("%d %c", myVar.i, myVar.c);
return 0;
}
Compile error because struct type (containing two fields of dissimilar type i.e. an int and a char) has been mentioned along with definition of myVar of that struct type.
Compile error because of incorrect syntax of initialization of myVar. Basically, member of operator (i.e. dot .) has been used without myVar.
Compile error for not only B but for incorrect order of fields in myVar i.e. field c has been initialized first and then field i has been initialized.
No compile error and it’ll print 100 A.
Question 10
#include "stdio.h"
int main()
{
struct {int a[2], b;} arr[] = {[0].a = {1}, [1].a = {2}, [0].b = 1, [1].b = 2};
printf("%d %d %d and",arr[0].a[0],arr[0].a[1],arr[0].b);
printf("%d %d %d\\n",arr[1].a[0],arr[1].a[1],arr[1].b);
return 0;
}
There are 20 questions to complete.