tìm hiểu về các kiểu cấu trúc trong Lập trình C

C struct

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 structureName 
{
    dataType member1;
    dataType member2;
    ...
};

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

struct Person
{
    char name[50];
    int citNo;
    float salary;
};

Ở đâ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 salary;
};

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 salary;
} person1, person2, p[20];

Trong cả hai trường hợp, hai biến PERSON1 , nhân viên2 , và một biến mảng p có 20 phần tử kiểu struct Personđược tạo ra.

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 vào  lương của nhân viên2 . Đây là cách bạn có thể làm điều đó.

person2.salary

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

// Program to add two distances (feet-inch)
#include <stdio.h>
struct Distance
{
    int feet;
    float inch;
} dist1, dist2, sum;

int main()
{
    printf("1st distance\n");
    printf("Enter feet: ");
    scanf("%d", &dist1.feet);

    printf("Enter inch: ");
    scanf("%f", &dist1.inch);
    printf("2nd distance\n");

    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

1st distance
Enter feet: 12
Enter inch: 7.9
2nd distance
Enter feet: 2
Enter inch: 9.8
Sum of distances = 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 Distance{
    int feet;
    float inch;
};

int main() {
    struct Distance d1, d2;
}

tương đương với

typedef struct Distance{
    int feet;
    float inch;
} distances;

int main() {
    distances 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 imag;
 float real;
};

struct number
{
   struct complex comp;
   int integers;
} num1, num2;

Giả sử, bạn muốn thiết lập IMAG của num2 biến 11. Đây là cách bạn có thể làm điều đó:

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 sẽ là có một bộ sưu tập tất 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.










Gõ tìm kiếm nhanh...