ความหมาย
Pointer to structure คือ pointer ที่เก็บที่อยู่ของ structure ทั้งหมด ใช้สร้างโครงสร้างข้อมูลซับซ้อน เช่น linked lists, trees, graphs
การประกาศ
struct tagname *ptr;
ตัวอย่าง: struct student *s;
การเข้าถึงสมาชิก
ใช้ arrow operator (->)
ptr->membername;
ตัวอย่าง: s->sno, s->sname, s->marks;
ตัวอย่างโปรแกรมที่ 1: การใช้งานพื้นฐาน
#include <stdio.h>
struct student {
int sno;
char sname[30];
float marks;
};
int main() {
struct student s;
struct student *st;
printf("ป้อนหมายเลข ชื่อ คะแนน: ");
scanf("%d%s%f", &s.sno, s.sname, &s.marks);
st = &s; // st ชี้ไปที่ s
printf("รายละเอียดนักศึกษา:\\n");
printf("หมายเลข = %d\\n", st->sno);
printf("ชื่อ = %s\\n", st->sname);
printf("คะแนน = %f\\n", st->marks);
return 0;
}ผลลัพธ์
ป้อนหมายเลข ชื่อ คะแนน: 1 Lucky 98 รายละเอียดนักศึกษา: หมายเลข = 1 ชื่อ = Lucky คะแนน = 98.000000
ตัวอย่างโปรแกรมที่ 2: ใช้ Pointer รับค่าจากผู้ใช้
#include <stdio.h>
struct person {
int age;
float weight;
};
int main() {
struct person *personPtr, person1;
personPtr = &person1;
printf("ป้อนอายุ: ");
scanf("%d", &personPtr->age);
printf("ป้อนน้ำหนัก: ");
scanf("%f", &personPtr->weight);
printf("แสดงผล:\\n");
printf("อายุ: %d\\n", personPtr->age);
printf("น้ำหนัก: %f\\n", personPtr->weight);
return 0;
}ผลลัพธ์
ป้อนอายุ: 45 ป้อนน้ำหนัก: 60 แสดงผล: อายุ: 45 น้ำหนัก: 60.000000
สรุปข้อดีของการใช้ Pointer to Structure
- เข้าถึงหน่วยความจำโดยตรง เร็วกว่า
- ส่งผ่านฟังก์ชันได้โดยไม่ต้อง copy structure ทั้งตัว
- จำเป็นสำหรับการสร้าง Dynamic Data Structures (Linked List, Tree, Graph)
- ใช้ร่วมกับ malloc/calloc เพื่อสร้างโครงสร้างข้อมูลขนาดไดนามิก