Pointer to Structure** คือตัวแปรพอยน์เตอร์ที่เก็บที่อยู่ของโครงสร้าง (Struct) ทั้งหมด ใช้สร้างโครงสร้างข้อมูลซับซ้อน เช่น Linked List, Tree, Graph
การประกาศ
struct tagname *ptr;
ตัวอย่าง: struct student *s;
การเข้าถึงสมาชิก
ใช้ Arrow Operator (->) แทน Dot Operator (.)
ptr->membername;
ตัวอย่าง: s->sno, s->sname, s->marks
ตัวอย่างโปรแกรม
#include <stdio.h>
struct student {
int sno;
char sname[30];
float marks;
};
int main() {
struct student s;
struct student *st;
printf("Enter sno, sname, marks: ");
scanf("%d %s %f", &s.sno, s.sname, &s.marks);
st = &s; // st ชี้ไปที่ s
printf("\nStudent Details:\n");
printf("Number = %d\n", st->sno);
printf("Name = %s\n", st->sname);
printf("Marks = %.2f\n", st->marks);
return 0;
}
ผลลัพธ์
Enter sno, sname, marks: 1 priya 34 Student Details: Number = 1 Name = priya Marks = 34.00
ประโยชน์ของ Pointer to Structure
- ส่งผ่านฟังก์ชันได้โดยไม่ต้องคัดลอกโครงสร้างทั้งหมด (Pass by reference)
- จำเป็นสำหรับ Dynamic Data Structures (Linked List, Tree, Graph)
- จัดการหน่วยความจำได้มีประสิทธิภาพมากขึ้น