C Structure & Union
Question 1 |
#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 |
Discuss it
Question 2 |
#include<stdio.h> struct st { int x; static int y; }; int main() { printf("%d", sizeof(struct st)); return 0; }
4 | |
8 | |
Compiler Error | |
Runtime Error |
Discuss it
Question 3 |
C
struct node { int i; float j; }; struct node *s[10];
The above C declaration define 's' to be (GATE CS 2000)
An array, each element of which is a pointer to a structure of type node | |
A structure of 2 fields, each field being a pointer to an array of 10 elements | |
A structure of 3 fields: an integer, a float, and an array of 10 elements | |
An array, each element of which is a structure of type node. |
Discuss it
It defines an array, each element of which is a pointer to a structure of type node.
Question 4 |
Consider the following C declaration
C
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 |
Discuss it
Short array s[5] will take 10 bytes as size of short is 2 bytes.
When we declare a union, memory allocated for the union is equal to memory needed for the largest member of it, and all members share this same memory space. Since u is a union, memory allocated to u will be max of float y(4 bytes) and long z(8 bytes). So, total size will be 18 bytes (10 + 8).
Question 5 |
#include<stdio.h> struct st { int x; struct st next; }; int main() { struct st temp; temp.x = 10; temp.next = temp; printf("%d", temp.next.x); return 0; }
Compiler Error | |
10 | |
Runtime Error | |
Garbage Value |
Discuss it
Question 6 |
Which of the following operators can be applied on structure variables?
Equality comparison ( == ) | |
Assignment ( = ) | |
Both of the above | |
None of the above |
Discuss it
A structure variable can be assigned to other using =, but cannot be compared with other using ==
Question 7 |
union test { int x; char arr[8]; int y; }; int main() { printf("%d", sizeof(union test)); return 0; }Predict the output of above program. Assume that the size of an integer is 4 bytes and size of character is 1 byte. Also assume that there is no alignment needed.
12 | |
16 | |
8 | |
Compiler Error |
Discuss it
Question 8 |
union test { int x; char arr[4]; int y; }; int main() { union test t; t.x = 0; t.arr[1] = 'G'; printf("%s", t.arr); return 0; }Predict the output of above program. Assume that the size of an integer is 4 bytes and size of character is 1 byte. Also assume that there is no alignment needed.
Nothing is printed | |
G | |
Garbage character followed by 'G' | |
Garbage character followed by 'G', followed by more garbage characters | |
Compiler Error |
Discuss it
Question 9 |
# include <iostream> # include <string.h> using namespace std; struct Test { char str[20]; }; int main() { struct Test st1, st2; strcpy(st1.str, "GeeksQuiz"); st2 = st1; st1.str[0] = 'S'; cout << st2.str; return 0; }
Segmentation Fault | |
SeeksQuiz | |
GeeksQuiz | |
Compiler Error |
Discuss it
Question 10 |
#include<stdio.h> struct Point { int x, y, z; }; int main() { struct Point p1 = {.y = 0, .z = 1, .x = 2}; printf("%d %d %d", p1.x, p1.y, p1.z); return 0; }
Compiler Error | |
2 0 1 | |
0 1 2 | |
2 1 0 |
Discuss it