Computer >> Máy Tính >  >> Lập trình >> lập trình C

Làm thế nào để truy cập con trỏ tới cấu trúc trong ngôn ngữ C?

Con trỏ tới cấu trúc giữ địa chỉ của toàn bộ cấu trúc.

Chủ yếu, chúng được sử dụng để tạo cấu trúc dữ liệu phức tạp như danh sách được liên kết, cây, đồ thị, v.v.

Các thành viên của cấu trúc có thể được truy cập bằng cách sử dụng một toán tử đặc biệt gọi là toán tử mũi tên (->).

Tuyên bố

Sau đây là phần khai báo cho con trỏ tới cấu trúc -

struct tagname *ptr;

Ví dụ:struct student * s;

Đang truy cập

Bạn có thể truy cập con trỏ tới cấu trúc bằng cách sử dụng phần sau -

Ptr-> membername;

Ví dụ:s-> sno, s-> sname, s-> mark;

Ví dụ

Sau đây là chương trình C để truy cập con trỏ tới cấu trú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;
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

11

Giải thích

Đây, một biến con trỏ ptr giữ địa chỉ của giá trị đầu tiên 2 của một đối tượng clr. Sau đó, địa chỉ của biến con trỏ được tăng thêm 4 và cuối cùng, giá trị được hiển thị.

Ví dụ:

*(ptr + 0) = 2
*(ptr + 1) = 3
*(ptr + 2) = 5
*(ptr + 3) = 7
*(ptr + 4) = 11
*(ptr + 5) = 13

Hãy xem xét một ví dụ đơn giản khác để biết về con trỏ tới cấu trúc -

Ví dụ

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 ( );
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

enter sno, sname, marks :1 bhanu 69
details of the student are
Number = 1
name = bhanu
marks =69.000000