C struct (Cấu trúc)

Trong hướng dẫn này, bạn sẽ tìm hiểu về các kiểu cấu trúc trong Lập trình C. Bạn sẽ học cách xác định và sử dụng cấu trúc với sự trợ giúp của các ví dụ.

Trong lập trình C, một cấu trúc (hoặc cấu trúc) là một tập hợp các biến (có thể có nhiều kiểu khác nhau) dưới một tên duy nhất.

Làm thế nào để xác định cấu trúc?

Trước khi có thể tạo biến cấu trúc, bạn cần xác định kiểu dữ liệu của nó. Để xác định một cấu trúc, structtừ khóa được sử dụng.

Cú pháp của struct

 struct structName (dataType member1; dataType member2;…); 

Đây là một ví dụ:

 struct Person (char name (50); int citNo; float Lương;); 

Ở đây, một kiểu dẫn xuất struct Personđược xác định. Bây giờ, bạn có thể tạo các biến kiểu này.

Tạo biến cấu trúc

Khi một kiểu cấu trúc được khai báo, không có bộ nhớ hoặc bộ nhớ nào được cấp phát. Để cấp phát bộ nhớ của một kiểu cấu trúc nhất định và làm việc với nó, chúng ta cần tạo các biến.

Đây là cách chúng tôi tạo các biến cấu trúc:

struct Person (char name (50); int citNo; float Lương;); int main () (struct Person person1, person2, p (20); return 0;)

Một cách khác để tạo biến cấu trúc là:

 struct Person (char name (50); int citNo; float Lương;) person1, person2, p (20); 

Trong cả hai trường hợp, hai biến person1, person2 và một biến mảng p có 20 phần tử kiểu struct Personđược tạo.

Truy cập các thành viên của một cấu trúc

Có hai loại toán tử được sử dụng để truy cập các thành viên của một cấu trúc.

  1. . - Nhà điều hành thành viên
  2. -> - Toán tử con trỏ cấu trúc (sẽ được thảo luận trong phần hướng dẫn tiếp theo)

Giả sử, bạn muốn truy cập mức lương của người 2. Đây là cách bạn có thể làm điều đó.

 người2.salary

Ví dụ: Thêm hai khoảng cách

 // Program to add two distances (feet-inch) #include struct Distance ( int feet; float inch; ) dist1, dist2, sum; int main() ( printf("1st distance"); printf("Enter feet: "); scanf("%d", &dist1.feet); printf("Enter inch: "); scanf("%f", &dist1.inch); printf("2nd distance"); printf("Enter feet: "); scanf("%d", &dist2.feet); printf("Enter inch: "); scanf("%f", &dist2.inch); // adding feet sum.feet = dist1.feet + dist2.feet; // adding inches sum.inch = dist1.inch + dist2.inch; // changing to feet if inch is greater than 12 while (sum.inch>= 12) ( ++sum.feet; sum.inch = sum.inch - 12; ) printf("Sum of distances = %d\'-%.1f "", sum.feet, sum.inch); return 0; )

Đầu ra

 Khoảng cách đầu tiên Nhập feet: 12 Nhập inch: 7,9 Khoảng cách thứ 2 Nhập feet: 2 Nhập inch: 9,8 Tổng khoảng cách = 15'-5,7 "

Keyword typedef

Chúng tôi sử dụng typedeftừ khóa để tạo tên bí danh cho các loại dữ liệu. Nó thường được sử dụng với các cấu trúc để đơn giản hóa cú pháp khai báo biến.

Mã này

struct Khoảng cách (int feet; float inch;); int main () (struct Khoảng cách d1, d2;)

tương đương với

typedef struct Khoảng cách (int feet; float inch;) khoảng cách; int main () (khoảng cách d1, d2;)

Cấu trúc lồng nhau

Bạn có thể tạo cấu trúc trong một cấu trúc trong lập trình C. Ví dụ,

struct complex (int image; float real;); struct number (struct complex comp; int integer;) num1, num2;

Giả sử, bạn muốn đặt ảnh của biến num2 thành 11. Đây là cách bạn có thể thực hiện:

 num2.comp.imag = 11; 

Tại sao cấu trúc trong C?

Giả sử, bạn muốn lưu trữ thông tin về một người: tên, số quốc tịch và mức lương của người đó. Bạn có thể tạo tên biến, citNo và lương khác nhau để lưu trữ thông tin này.

Nếu bạn cần lưu trữ thông tin của nhiều người thì sao? Bây giờ, bạn cần tạo các biến khác nhau cho từng thông tin cho mỗi người: name1, citNo1, Lương1, name2, citNo2, Lương2, v.v.

Một cách tiếp cận tốt hơn là có một tập hợp tất cả các thông tin liên quan dưới một Personcấu trúc tên duy nhất và sử dụng nó cho mọi người.

Thêm về cấu trúc

  • Cấu trúc và con trỏ
  • Truyền cấu trúc cho một hàm

thú vị bài viết...