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

วิธีเข้าถึง Pointer to Structure ในภาษา C

บทความนี้อธิบายรายละเอียดเพิ่มเติมเกี่ยวกับการเข้าถึง Pointer to Structure รวมถึงตัวอย่างการใช้งานกับอาร์เรย์ในโครงสร้าง

การประกาศและการเข้าถึง (สรุป)

// ประกาศ
struct tagname *ptr;

// เข้าถึงสมาชิก
ptr->membername;

ตัวอย่างที่ 1: Pointer ชี้ไปยัง Array ใน Struct

#include <stdio.h>

struct classroom {
    int students[7];
};

int main() {
    struct classroom clr = {2, 3, 5, 7, 11, 13, 17};
    int *ptr;
    
    ptr = (int *)&clr;  // ptr ชี้ไปที่สมาชิกแรกของอาร์เรย์
    
    printf("Value at ptr+4 = %d\n", *(ptr + 4));  // แสดงค่าตำแหน่งที่ 4 (0-based)
    
    // แสดงค่าทั้งหมด
    for(int i = 0; i < 7; i++)
        printf("*(ptr + %d) = %d\n", i, *(ptr + i));
    
    return 0;
}

ผลลัพธ์

Value at ptr+4 = 11
*(ptr + 0) = 2
*(ptr + 1) = 3
*(ptr + 2) = 5
*(ptr + 3) = 7
*(ptr + 4) = 11
*(ptr + 5) = 13
*(ptr + 6) = 17

ตัวอย่างที่ 2: Pointer to Struct ปกติ

#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;
    
    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 bhanu 69

Student Details:
Number = 1
Name = bhanu
Marks = 69.00

สรุป

  • ใช้ & เพื่อเอาที่อยู่ของ Struct ให้ Pointer
  • ใช้ -> เพื่อเข้าถึงสมาชิกผ่าน Pointer
  • Pointer สามารถชี้ไปที่ Array ภายใน Struct ได้ โดยการ Cast เป็น Pointer ของชนิดข้อมูล Array