👉
Structures & Unions

Pointers to Structures

-> Arrow Operator
💡 Struct pointer se access karna ek forwarding address use karne jaisa hai — direct ghar jaane (dot operator) ki jagah, us ghar ka address (pointer) use karke andar jhaankte ho (-> arrow operator).

Struct ka pointer banana bahut common hai, especially functions ko struct pass karte waqt (bina poora struct copy kiye, jo bada aur slow ho sakta hai). Struct pointer ke members access karne ke liye -> (arrow) operator use hota hai, dot (.) nahi.

ptr->member technically (*ptr).member ka shorthand hai — pehle dereference karo (pointer se struct tak pahuncho), phir member access karo. Arrow operator ye dono steps ek saath karta hai, isliye zyada readable hai.

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

void printStudent(struct Student *s) {
  printf("%s: %d\n", s->name, s->marks);  // arrow operator
  // same as: (*s).name, (*s).marks
}

int main() {
  struct Student s1 = {"Zoya", 88};
  struct Student *ptr = &s1;

  printStudent(ptr);
  ptr->marks = 95;   // update through pointer
  printf("%d\n", s1.marks); // 95 — original bhi change hua
  return 0;
}
👉
Struct pointer se access karna ek forwarding address use karne jaisa hai — direct ghar jaane (dot operator) ki jagah, us ghar ka address (pointer) use karke andar jhaankte ho (-> arrow operator).
1 / 2
⚡ Quick Recap
  • Pointer se struct access karne ke liye -> operator
  • ptr->member = (*ptr).member ka shorthand
  • Functions mein struct pointer pass karo — copying se bachne ke liye
On this page (1 subtopics)

Ek struct apne hi type ka pointer member rakh sakta hai — isse "self-referential structure" kehte hain, aur ye linked lists, trees, aur graphs jaisi data structures ka foundation hai.

struct Node {
  int data;
  struct Node *next;  // apne hi type ka pointer
};

int main() {
  struct Node n1 = {10, NULL};
  struct Node n2 = {20, NULL};
  n1.next = &n2;  // n1 ab n2 se linked hai

  printf("%d -> %d\n", n1.data, n1.next->data); // 10 -> 20
  return 0;
}
💡Tip: struct Node *next; valid hai (pointer hai), lekin struct Node next; (bina pointer) INVALID hai — infinite size ka struct banega (compiler error). Pointer ki fixed size hoti hai, struct khud ki nahi.