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

จะเข้าถึงตัวชี้ไปยังโครงสร้างในภาษา C ได้อย่างไร?


ตัวชี้ไปยังโครงสร้างถือที่อยู่ของโครงสร้างทั้งหมด

ส่วนใหญ่ใช้เพื่อสร้างโครงสร้างข้อมูลที่ซับซ้อน เช่น รายการที่เชื่อมโยง ต้นไม้ กราฟ และอื่นๆ

สามารถเข้าถึงสมาชิกของโครงสร้างได้โดยใช้ตัวดำเนินการพิเศษที่เรียกว่าตัวดำเนินการลูกศร ( -> )

ประกาศ

ต่อไปนี้เป็นคำประกาศสำหรับตัวชี้ไปยังโครงสร้าง -

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