Bird
Raised Fist0
C++programming~20 mins

Accessing structure members in C++ - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Structure Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of accessing structure members with dot operator
What is the output of this C++ code snippet?
C++
struct Point {
    int x;
    int y;
};

int main() {
    Point p = {3, 4};
    std::cout << p.x << "," << p.y << std::endl;
    return 0;
}
ACompilation error
B3,4
C4,3
Dx=3,y=4
Attempts:
2 left
💡 Hint
Remember the dot operator accesses members directly by name.
❓ Predict Output
intermediate
2:00remaining
Output when accessing structure members via pointer
What will this C++ program print?
C++
struct Data {
    int value;
};

int main() {
    Data d = {10};
    Data* ptr = &d;
    std::cout << ptr->value << std::endl;
    return 0;
}
AGarbage value
BCompilation error
C10
D0
Attempts:
2 left
💡 Hint
Use the arrow operator to access members through pointers.
❓ Predict Output
advanced
2:00remaining
Output of nested structure member access
What is the output of this code?
C++
struct Inner {
    int a;
};

struct Outer {
    Inner inner;
};

int main() {
    Outer o = {{5}};
    std::cout << o.inner.a << std::endl;
    return 0;
}
A5
BCompilation error
C0
DGarbage value
Attempts:
2 left
💡 Hint
Access nested members by chaining dot operators.
❓ Predict Output
advanced
2:00remaining
Output when accessing structure members with pointer and dot
What happens when you run this code?
C++
struct Item {
    int id;
};

int main() {
    Item item = {7};
    Item* p = &item;
    std::cout << (*p).id << std::endl;
    return 0;
}
A7
BCompilation error
C0
DRuntime error
Attempts:
2 left
💡 Hint
Dereference pointer first, then use dot operator.
🧠 Conceptual
expert
2:00remaining
Error type when accessing structure member incorrectly
What error will this code produce?
C++
struct Sample {
    int x;
};

int main() {
    Sample* s = nullptr;
    std::cout << s->x << std::endl;
    return 0;
}
ACompilation error
BUndefined behavior but no crash
COutput: 0
DSegmentation fault (runtime error)
Attempts:
2 left
💡 Hint
Accessing member through null pointer causes crash.

Practice

(1/5)
1. What operator is used to access members of a structure variable in C++?
easy
A. Double colon (::)
B. Arrow operator (->)
C. Colon operator (:)
D. Dot operator (.)

Solution

  1. Step 1: Recall structure member access syntax

    In C++, to access a member of a structure variable, the dot operator (.) is used.
  2. Step 2: Differentiate from pointer access

    The arrow operator (->) is used when accessing members through a pointer, not a direct variable.
  3. Final Answer:

    Dot operator (.) -> Option D
  4. Quick Check:

    Structure member access = dot operator (.) [OK]
Hint: Use dot (.) for variables, arrow (->) for pointers [OK]
Common Mistakes:
  • Confusing dot (.) with arrow (->)
  • Using colon (::) which is for scope resolution
  • Using arrow (->) on non-pointer variables
2. Which of the following is the correct syntax to access member age of a structure variable person?
easy
A. person->age;
B. person::age;
C. person.age;
D. person:age;

Solution

  1. Step 1: Identify the variable type

    Since person is a structure variable (not a pointer), use the dot operator to access members.
  2. Step 2: Check syntax correctness

    Correct syntax is person.age;. The arrow operator (->) is for pointers, colons are invalid here.
  3. Final Answer:

    person.age; -> Option C
  4. Quick Check:

    Direct struct variable uses dot (.) [OK]
Hint: Use dot (.) for struct variables, arrow (->) for pointers [OK]
Common Mistakes:
  • Using arrow (->) on non-pointer variables
  • Using colon (:) or double colon (::) incorrectly
  • Missing semicolon at end
3. What will be the output of the following code?
#include <iostream>
struct Point {
  int x;
  int y;
};

int main() {
  Point p = {3, 4};
  std::cout << p.x + p.y << std::endl;
  return 0;
}
medium
A. 7
B. 34
C. 0
D. Compilation error

Solution

  1. Step 1: Understand structure initialization

    The structure Point is initialized with x=3 and y=4.
  2. Step 2: Calculate the output expression

    The code outputs p.x + p.y which is 3 + 4 = 7.
  3. Final Answer:

    7 -> Option A
  4. Quick Check:

    3 + 4 = 7 [OK]
Hint: Add members accessed by dot operator for result [OK]
Common Mistakes:
  • Concatenating numbers as strings (34)
  • Assuming default zero initialization
  • Confusing pointer access syntax
4. Identify the error in the following code snippet:
struct Car {
  int speed;
};

int main() {
  Car c;
  c->speed = 100;
  return 0;
}
medium
A. Missing semicolon after struct definition
B. Using arrow operator (->) on a non-pointer variable
C. Incorrect struct member name
D. No error, code is correct

Solution

  1. Step 1: Check variable type and operator

    The variable c is a struct variable, not a pointer.
  2. Step 2: Identify correct member access

    Using c->speed is invalid here; should use c.speed.
  3. Final Answer:

    Using arrow operator (->) on a non-pointer variable -> Option B
  4. Quick Check:

    Non-pointer struct uses dot (.) [OK]
Hint: Use dot (.) for variables, arrow (->) only for pointers [OK]
Common Mistakes:
  • Using arrow (->) on struct variables
  • Assuming arrow works for all struct access
  • Ignoring pointer vs variable difference
5. Given the following code, how can you correctly access the member name of the structure pointer ptr?
struct Student {
  std::string name;
  int id;
};

Student s = {"Alice", 101};
Student* ptr = &s;
// Access name here
hard
A. ptr->name;
B. ptr.name;
C. ptr::name;
D. *ptr.name;

Solution

  1. Step 1: Understand pointer member access

    When accessing members through a pointer, you can use the arrow operator (->) or dereference then dot ( (*ptr).member ).
  2. Step 2: Check each option

    ptr.name; is invalid syntax for a pointer. ptr->name; is the correct syntax using the arrow operator. ptr::name; incorrectly uses scope resolution operator. *ptr.name; is wrong due to operator precedence; it should be (*ptr).name;.
  3. Final Answer:

    ptr->name; -> Option A
  4. Quick Check:

    Pointer member access = arrow (->) or (*ptr).member [OK]
Hint: Use arrow (->) or dereference then dot ( (*ptr).member ) [OK]
Common Mistakes:
  • Using dot (.) directly on pointer
  • Forgetting to dereference pointer
  • Confusing pointer and variable access
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard