Bird
Raised Fist0
Cprogramming~5 mins

Accessing structure members

Choose your learning style10 modes available
Introduction
Structures group related data together. Accessing structure members lets you use or change each piece of data inside the group.
When you want to store information about a person, like name and age, in one place.
When you need to keep details about a book, such as title, author, and pages.
When you want to organize data about a car, like model, year, and color.
When you want to pass multiple related values to a function easily.
When you want to read or update specific parts of grouped data.
Syntax
C
struct StructName {
    dataType member1;
    dataType member2;
    // more members
};

struct StructName variableName;

// Access members using dot operator
variableName.member1 = value;
value = variableName.member2;
Use the dot (.) operator to access members of a structure variable.
Make sure the structure variable is declared before accessing its members.
Examples
Here, we create a Person structure and set the age member to 25.
C
struct Person {
    char name[50];
    int age;
};

struct Person p1;
p1.age = 25;
We set the title and pages of a Book structure variable.
C
struct Book {
    char title[100];
    int pages;
};

struct Book b1;
strcpy(b1.title, "C Programming");
b1.pages = 300;
Sample Program
This program creates a Student structure, assigns values to its members, and prints them.
C
#include <stdio.h>
#include <string.h>

struct Student {
    char name[30];
    int grade;
};

int main() {
    struct Student s1;
    strcpy(s1.name, "Alice");
    s1.grade = 90;

    printf("Student Name: %s\n", s1.name);
    printf("Student Grade: %d\n", s1.grade);

    return 0;
}
OutputSuccess
Important Notes
Remember to include when copying strings into structure members.
Use strcpy() to copy strings into character arrays inside structures.
Access structure members with the dot operator only when you have a structure variable, not a pointer.
Summary
Structures group related data under one name.
Use the dot operator (.) to access or change structure members.
Assign values carefully, especially for strings inside structures.

Practice

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

Solution

  1. Step 1: Understand structure member access

    In C, when you have a structure variable, you use the dot operator (.) to access its members.
  2. Step 2: Differentiate from pointer access

    The arrow operator (->) is used when you have a pointer to a structure, not the structure variable itself.
  3. Final Answer:

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

    Structure variable member access = dot operator (.) [OK]
Hint: Use dot (.) for struct variables, arrow (->) for pointers [OK]
Common Mistakes:
  • Confusing dot (.) with arrow (->) operator
  • Using colon (:) which is invalid in C
  • Using double colon (::) which is from other languages
2. Given the structure struct Point { int x; int y; } p;, which is the correct way to assign 10 to member x?
easy
A. p->x = 10;
B. p:x = 10;
C. p.x = 10;
D. p[x] = 10;

Solution

  1. Step 1: Identify the variable type

    Here, p is a structure variable, not a pointer.
  2. Step 2: Use correct member access syntax

    For structure variables, use the dot operator (.) to access members, so p.x = 10; is correct.
  3. Final Answer:

    p.x = 10; -> Option C
  4. Quick Check:

    Structure variable assignment uses dot (.) [OK]
Hint: Use dot (.) for struct variables, arrow (->) only for pointers [OK]
Common Mistakes:
  • Using arrow (->) with non-pointer variable
  • Using colon (:) which is invalid syntax
  • Using array-like syntax on struct members
3. What is the output of this code?
struct Person {
  char name[10];
  int age;
};

int main() {
  struct Person p = {"Amy", 25};
  printf("%s %d", p.name, p.age);
  return 0;
}
medium
A. Amy 25
B. Amy 0
C. Error: cannot assign string to array
D. Random garbage values

Solution

  1. Step 1: Understand structure initialization

    The structure p is initialized with "Amy" for name and 25 for age.
  2. Step 2: Print structure members

    The printf prints p.name as a string and p.age as an integer, so output is Amy 25.
  3. Final Answer:

    Amy 25 -> Option A
  4. Quick Check:

    Struct initialized correctly, prints members [OK]
Hint: Initialize structs with braces; access members with dot [OK]
Common Mistakes:
  • Thinking string assignment to array is invalid here
  • Confusing pointer and array initialization
  • Expecting syntax error for string in struct
4. Identify the error in this code snippet:
struct Data {
  int id;
  float value;
};

int main() {
  struct Data d;
  d->id = 5;
  d.value = 3.14;
  return 0;
}
medium
A. Using arrow operator (->) with structure variable
B. Missing semicolon after struct definition
C. Incorrect float assignment
D. No error, code is correct

Solution

  1. Step 1: Check member access operators

    The variable d is a structure variable, not a pointer, so d->id is incorrect.
  2. Step 2: Correct operator usage

    Use dot operator (.) for structure variables: d.id = 5; is correct.
  3. Final Answer:

    Using arrow operator (->) with structure variable -> Option A
  4. Quick Check:

    Arrow (->) only for pointers, dot (.) for variables [OK]
Hint: Use dot (.) for struct variables, arrow (->) only for pointers [OK]
Common Mistakes:
  • Using arrow (->) on non-pointer struct variable
  • Ignoring dot operator for member access
  • Assuming no error when mixing operators
5. Consider this code:
struct Employee {
  char name[20];
  int id;
};

int main() {
  struct Employee emp1 = {"John", 101};
  struct Employee *ptr = &emp1;
  ptr->id = 202;
  printf("%s %d", emp1.name, emp1.id);
  return 0;
}
What will be the output?
hard
A. John 101
B. John 202
C. Error: cannot use arrow operator here
D. John 0

Solution

  1. Step 1: Understand pointer to structure

    ptr points to emp1, so ptr->id changes emp1.id.
  2. Step 2: Update and print values

    After ptr->id = 202;, emp1.id becomes 202. Printing emp1.name and emp1.id outputs John 202.
  3. Final Answer:

    John 202 -> Option B
  4. Quick Check:

    Pointer access updates struct member correctly [OK]
Hint: Use arrow (->) with pointers to structs to access members [OK]
Common Mistakes:
  • Thinking arrow operator causes error with pointers
  • Not realizing pointer changes original struct
  • Confusing dot and arrow operators with pointers
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