Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

Pointers to Structures ในภาษา C คืออะไร

ความหมาย

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 เพื่อสร้างโครงสร้างข้อมูลขนาดไดนามิก