ตัวชี้ไปยังโครงสร้างถือที่อยู่ของโครงสร้างทั้งหมด
ส่วนใหญ่ใช้เพื่อสร้างโครงสร้างข้อมูลที่ซับซ้อน เช่น รายการที่เชื่อมโยง ต้นไม้ กราฟ และอื่นๆ
สามารถเข้าถึงสมาชิกของโครงสร้างได้โดยใช้ตัวดำเนินการพิเศษที่เรียกว่าตัวดำเนินการลูกศร ( -> )
ประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับตัวชี้ไปยังโครงสร้าง -
struct tagname *ptr;
ตัวอย่างเช่น จัดโครงสร้างนักเรียน *s;
การเข้าถึง
คุณสามารถเข้าถึงตัวชี้ไปยังโครงสร้างโดยใช้สิ่งต่อไปนี้ -
Ptr-> membername;
ตัวอย่างเช่น s->sno, s->sname, s->marks;
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรม C เพื่อเข้าถึงตัวชี้ไปยังโครงสร้าง -
#include<stdio.h>
struct classroom{
int students[7];
};
int main(){
struct classroom clr = {2, 3, 5, 7, 11, 13};
int *ptr;
ptr = (int *)&clr;
printf("%d",*(ptr + 4));
return 0;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
11
คำอธิบาย
ที่นี่ตัวแปรตัวชี้ ptr เก็บที่อยู่ของค่าแรก 2 ของวัตถุ clr จากนั้นแอดเดรสของตัวแปรพอยน์เตอร์จะเพิ่มขึ้น 4 และในที่สุด ค่าก็จะปรากฏขึ้น
ตัวอย่างเช่น
*(ptr + 0) = 2 *(ptr + 1) = 3 *(ptr + 2) = 5 *(ptr + 3) = 7 *(ptr + 4) = 11 *(ptr + 5) = 13
ลองพิจารณาตัวอย่างง่ายๆ อีกตัวอย่างหนึ่งเพื่อทราบเกี่ยวกับตัวชี้ไปยังโครงสร้าง -
ตัวอย่าง
struct student{
int sno;
char sname[30];
float marks;
};
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 ("details of the student are\n");
printf ("Number = %d\n", st ->sno);
printf ("name = %s\n", st->sname);
printf ("marks =%f", st->marks);
getch ( );
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
enter sno, sname, marks :1 bhanu 69 details of the student are Number = 1 name = bhanu marks =69.000000