A structure is a user-defined data type that groups different variables under one name. Each member has its own memory location.
Click to reveal answer
beginner
What is a union in C++?
A union is a user-defined data type where all members share the same memory location. Only one member can hold a value at a time.
Click to reveal answer
intermediate
How does memory allocation differ between a structure and a union?
In a structure, memory is allocated for all members separately, so total size is sum of all members. In a union, memory is shared, so size equals the largest member.
Click to reveal answer
intermediate
Can you access all members of a union at the same time?
No. Since all members share the same memory, only one member can hold a valid value at a time. Accessing others may lead to unexpected results.
Click to reveal answer
intermediate
When would you prefer a union over a structure?
Use a union when you want to save memory and only need to store one of several possible data types at a time.
Click to reveal answer
Which of the following is true about structures in C++?
AEach member has its own memory location.
BAll members share the same memory location.
CStructures can only hold one member at a time.
DStructures do not support multiple data types.
✗ Incorrect
Structures allocate separate memory for each member, allowing all members to be accessed independently.
What is the size of a union in C++?
ASum of sizes of all members.
BSize of the smallest member.
CZero bytes.
DSize of the largest member.
✗ Incorrect
A union's size equals the size of its largest member because all members share the same memory.
Which statement about unions is correct?
AYou can safely store values in all members simultaneously.
BUnions allocate separate memory for each member.
COnly one member can hold a valid value at a time.
DUnions cannot contain different data types.
✗ Incorrect
Since union members share memory, only one member can hold a valid value at a time.
When is it better to use a structure instead of a union?
AWhen you want to save memory by sharing storage.
BWhen you need to store multiple values at the same time.
CWhen you only need one value at a time.
DWhen you want to restrict data types.
✗ Incorrect
Structures allow storing multiple values simultaneously because each member has its own memory.
Which of these is a key difference between structure and union?
AUnion members share memory; structure members have separate memory.
BStructure members share memory; union members have separate memory.
CBoth share memory equally.
DNeither uses memory.
✗ Incorrect
Unions share memory among members, while structures allocate separate memory for each member.
Explain the main differences between a structure and a union in C++.
Think about how memory is shared or separated and when you would use each.
You got /3 concepts.
Describe a scenario where using a union is more efficient than a structure.
Consider situations where only one value is needed at a time.
You got /3 concepts.
Practice
(1/5)
1. Which of the following best describes the main difference between a struct and a union in C++?
easy
A. A struct stores all members separately; a union shares memory among members.
B. A struct shares memory among members; a union stores all members separately.
C. Both struct and union store members separately but differ in syntax.
D. Both struct and union share memory but differ in member access.
Solution
Step 1: Understand memory allocation in struct
A struct allocates separate memory for each member, so all members can hold values simultaneously.
Step 2: Understand memory allocation in union
A union shares the same memory space for all members, so only one member can hold a valid value at a time.
Final Answer:
A struct stores all members separately; a union shares memory among members. -> Option A
Quick Check:
Struct = separate memory, Union = shared memory [OK]
Hint: Struct = all values stored; Union = one value stored [OK]
Common Mistakes:
Thinking union stores all members separately
Confusing struct and union memory sharing
Assuming both have same memory behavior
2. Which of the following is the correct syntax to define a union named Data with an int and a float member?
easy
A. struct Data { int i; float f; };
B. union Data ( int i; float f; );
C. union Data { int i; float f; };
D. union Data = { int i; float f; };
Solution
Step 1: Recall union syntax
The correct syntax uses the keyword union, followed by the name, and braces enclosing members separated by semicolons.
Step 2: Check each option
union Data { int i; float f; }; matches correct syntax. struct Data { int i; float f; }; uses struct, not union. union Data ( int i; float f; ); uses parentheses instead of braces. union Data = { int i; float f; }; uses an assignment which is invalid.
Final Answer:
union Data { int i; float f; }; -> Option C
Quick Check:
Union syntax = keyword + braces + members [OK]
Hint: Use braces {} with union keyword for definition [OK]
Common Mistakes:
Using struct keyword instead of union
Using parentheses instead of braces
Trying to assign values in definition
3. What will be the output of the following C++ code?
union Number {
int i;
float f;
};
int main() {
Number n;
n.i = 65;
std::cout << n.f << std::endl;
return 0;
}
medium
A. A floating-point number representing the bit pattern of 65
B. 0
C. 65
D. Compilation error
Solution
Step 1: Understand union memory sharing
Assigning 65 to n.i stores the integer bits in the shared memory.
Step 2: Interpret bits as float
Printing n.f reads the same bits as a float, resulting in a floating-point number representing the bit pattern of 65, not the integer 65.
Final Answer:
A floating-point number representing the bit pattern of 65 -> Option A
Quick Check:
Union shares bits; reading different type shows bit pattern [OK]
Hint: Union members share bits; reading different type shows bit pattern [OK]
Common Mistakes:
Expecting integer 65 to print as float 65.0
Assuming union stores separate copies
Thinking code causes compilation error
4. Identify the error in the following code snippet:
struct Data {
int x;
union {
int i;
float f;
} u;
};
int main() {
Data d;
d.x = 10;
d.u.i = 20;
d.u.f = 3.14;
std::cout << d.x << ", " << d.u.i << std::endl;
return 0;
}
medium
A. Cannot assign float to union member.
B. Accessing union member after assigning another member leads to undefined value.
C. Missing semicolon after union definition.
D. Struct cannot contain a union as a member.
Solution
Step 1: Analyze union member assignments
Assigning d.u.i = 20; then d.u.f = 3.14; overwrites the same memory because union members share memory.
Step 2: Understand reading union members
Reading d.u.i after assigning d.u.f gives an undefined or unexpected value because only the last assigned member is valid.
Final Answer:
Accessing union member after assigning another member leads to undefined value. -> Option B
Quick Check:
Union stores one value; reading old member is invalid [OK]
Hint: Only last assigned union member holds valid data [OK]
Common Mistakes:
Thinking struct cannot have union member
Ignoring union memory sharing rules
Expecting both union members to hold values simultaneously
5. You want to store either an integer ID or a floating-point score in a variable but never both at the same time, and you want to save memory. Which is the best approach in C++?
hard
A. Use a class with private int and float members.
B. Use a struct with both int and float members.
C. Use two separate variables, one int and one float.
D. Use a union with int and float members.
Solution
Step 1: Understand memory needs
Since only one value (int or float) is needed at a time, memory can be saved by sharing storage.
Step 2: Choose union for shared memory
A union allows storing either int or float in the same memory space, saving memory compared to a struct which stores both separately.
Step 3: Evaluate other options
Using two separate variables wastes memory. A class with private members behaves like struct in memory. Struct stores both values simultaneously, using more memory.
Final Answer:
Use a union with int and float members. -> Option D
Quick Check:
Union saves memory when only one value needed [OK]
Hint: Use union to save memory when storing one of many types [OK]
Common Mistakes:
Choosing struct and wasting memory
Using separate variables unnecessarily
Confusing class with memory optimization
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.