A2oz

What is dereferencing a pointer to a struct in C?

Published in C++ Programming 2 mins read

Dereferencing a pointer to a struct in C means accessing the members (data fields) of the struct that the pointer points to. You use the dereference operator (*) to do this.

How it works:

  1. Declare a struct: Define the structure with its data members.
  2. Create a pointer to the struct: Declare a pointer variable of the struct's type.
  3. Allocate memory for the struct: Use malloc() or calloc() to allocate memory for the struct on the heap.
  4. Assign the memory address to the pointer: Store the address returned by the memory allocation function into the pointer variable.
  5. Dereference the pointer: Use the * operator followed by the pointer variable to access the struct's members.

Example:

#include <stdio.h>
#include <stdlib.h>

struct Student {
  char name[50];
  int roll_no;
  float marks;
};

int main() {
  struct Student *ptr;

  // Allocate memory for a Student struct
  ptr = (struct Student *)malloc(sizeof(struct Student));

  // Assign values to the struct members using the pointer
  (*ptr).name = "John Doe";
  (*ptr).roll_no = 10;
  (*ptr).marks = 90.5;

  // Print the student details
  printf("Name: %s\n", (*ptr).name);
  printf("Roll No: %d\n", (*ptr).roll_no);
  printf("Marks: %.2f\n", (*ptr).marks);

  free(ptr);
  return 0;
}

Practical Insights:

  • Dereferencing a pointer to a struct allows you to manipulate the data within the struct directly.
  • You can access individual members using the -> operator (e.g., ptr->name).
  • Always ensure you have allocated memory for the struct before dereferencing the pointer.

Conclusion:

Dereferencing a pointer to a struct in C is a fundamental operation for accessing and manipulating data within a structured data type. It enables you to work with complex data by providing a convenient way to access and modify individual members of the struct.

Related Articles