Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Learn Pointers to Structs | Working with Pointers and Structs
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Mastering C Structs

bookPointers to Structs

The C programming language allows you to create pointers not only to regular data types but also to structures (since a structure is a custom data type).

Declaration and initialization of a pointer looks like this:

struct <name_of_struct>
{
    <field_of_struct>;
};

struct <name_of_struct>* <name_of_pointer>;

If <name_of_pointer> is a pointer to a structure,
then *(<name_of_pointer>) is the structure itself.

To access the fields of a structure through a pointer, you must use the -> operator.

Note
Note

-> is an analogue of the structure access operator .

main.c

main.c

copy
12345678910111213141516171819202122
#include <stdio.h> // structure declaration struct Point { int x; int y; }; int main() { // create a structure variable of Point type struct Point p1; p1.x = 10; p1.y = 20; // create a pointer to a structure of type Point and assign it the address of variable p1 struct Point* ptr = &p1; // Access structure members via pointer by `->` operator printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y); return 0; }

This program shows how to work with a Point structure that stores two coordinates, x and y. In the main function, a p1 variable is created and assigned coordinate values, then a pointer to this structure is initialized. Using the -> operator, the program accesses the structure's fields through the pointer and prints the point's coordinates to the screen.

Task

Swipe to start coding

You have a student with grades in 3 subjects: Math, Physics, and Programming.
Your task is to calculate the student's average grade and determine if they passed the course.

Inside the calculateAverageAndCheck function:

  1. Access each subject grade using the pointer.
  2. Add all three grades together to find the total score.
  3. Divide the total by 3.0 to calculate the average grade.
  4. Compare the result to the passing threshold of 60.
  5. If the average is greater than or equal to 60, return true (the student passed).
  6. Otherwise, return false (the student failed).

Example

MathPhysicsProgrammingAverageResult
85.055.060.066.67βœ… Passed
50.040.045.045.00❌ Failed
60.060.060.060.00βœ… Passed

Solution

Everything was clear?

How can we improve it?

Thanks for your feedback!

SectionΒ 2. ChapterΒ 2
single

single

Ask AI

expand

Ask AI

ChatGPT

Ask anything or try one of the suggested questions to begin our chat

Suggested prompts:

Can you show me the code example for this Point structure?

How does the `->` operator differ from the dot operator in C?

Can you explain how to initialize a pointer to a structure in more detail?

close

bookPointers to Structs

Swipe to show menu

The C programming language allows you to create pointers not only to regular data types but also to structures (since a structure is a custom data type).

Declaration and initialization of a pointer looks like this:

struct <name_of_struct>
{
    <field_of_struct>;
};

struct <name_of_struct>* <name_of_pointer>;

If <name_of_pointer> is a pointer to a structure,
then *(<name_of_pointer>) is the structure itself.

To access the fields of a structure through a pointer, you must use the -> operator.

Note
Note

-> is an analogue of the structure access operator .

main.c

main.c

copy
12345678910111213141516171819202122
#include <stdio.h> // structure declaration struct Point { int x; int y; }; int main() { // create a structure variable of Point type struct Point p1; p1.x = 10; p1.y = 20; // create a pointer to a structure of type Point and assign it the address of variable p1 struct Point* ptr = &p1; // Access structure members via pointer by `->` operator printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y); return 0; }

This program shows how to work with a Point structure that stores two coordinates, x and y. In the main function, a p1 variable is created and assigned coordinate values, then a pointer to this structure is initialized. Using the -> operator, the program accesses the structure's fields through the pointer and prints the point's coordinates to the screen.

Task

Swipe to start coding

You have a student with grades in 3 subjects: Math, Physics, and Programming.
Your task is to calculate the student's average grade and determine if they passed the course.

Inside the calculateAverageAndCheck function:

  1. Access each subject grade using the pointer.
  2. Add all three grades together to find the total score.
  3. Divide the total by 3.0 to calculate the average grade.
  4. Compare the result to the passing threshold of 60.
  5. If the average is greater than or equal to 60, return true (the student passed).
  6. Otherwise, return false (the student failed).

Example

MathPhysicsProgrammingAverageResult
85.055.060.066.67βœ… Passed
50.040.045.045.00❌ Failed
60.060.060.060.00βœ… Passed

Solution

Switch to desktopSwitch to desktop for real-world practiceContinue from where you are using one of the options below
Everything was clear?

How can we improve it?

Thanks for your feedback!

SectionΒ 2. ChapterΒ 2
single

single

some-alt