C cấu trúc: Hướng dẫn cho người mới bắt đầu

Xin chào, các bạn đang theo đuổi lập trình! Hôm nay, chúng ta sẽ cùng lặn sâu vào thế giới kỳ diệu của các cấu trúc trong C. Đừng lo lắng nếu bạn chưa từng viết một dòng mã trước đây - tôi sẽ hướng dẫn bạn từng bước trong hành trình này, giống như tôi đã làm cho hàng trăm sinh viên trong những năm dạy học của mình. Vậy, hãy cùng bắt đầu cuộc phiêu lưu này nhé!

C - Structures

Cấu trúc trong C là gì?

Hãy tưởng tượng bạn đang xây dựng một sổ địa chỉ kỹ thuật số. Cho mỗi người, bạn muốn lưu trữ tên, số điện thoại và địa chỉ email của họ. Trong C, một cấu trúc cho phép bạn nhóm các thông tin liên quan lại với nhau dưới một tên duy nhất. Nó giống như tạo một kiểu dữ liệu tùy chỉnh có thể chứa nhiều loại dữ liệu khác nhau.

Đây là một ví dụ đơn giản: hãy nghĩ cấu trúc như một ba lô. Cũng như một ba lô có thể chứa các vật dụng khác nhau như sách, bút và bình nước, một cấu trúc có thể chứa các loại dữ liệu khác nhau.

Khai báo (Tạo) một Cấu trúc

Hãy bắt đầu bằng cách tạo cấu trúc đầu tiên của chúng ta. Chúng ta sẽ sử dụng từ khóa struct để làm điều này.

struct Person {
char name[50];
int age;
float height;
};

Trong ví dụ này, chúng ta đã tạo một cấu trúc叫做 Person. Nó có thể chứa một tên (lên tới 50 ký tự), một tuổi (một số nguyên) và một chiều cao (một số dấu phẩy động).

Khai báo Biến Cấu trúc

Bây giờ chúng ta đã xác định cấu trúc của mình, hãy tạo một biến của kiểu này.

struct Person john;

Dòng này tạo một biến名叫 john của kiểu struct Person. Nó giống như nói, "Hey C, hãy cấp cho tôi một ba lô名叫 'john' có thể chứa một tên, tuổi và chiều cao."

Khởi tạo Cấu trúc

Hãy đặt một số dữ liệu vào cấu trúc của chúng ta:

struct Person john = {"John Doe", 30, 5.9};

Ở đây, chúng ta đang.fill ba lô john của chúng ta với một tên ("John Doe"), một tuổi (30) và một chiều cao (5.9).

Truy cập các Thành viên của Cấu trúc

Để truy cập hoặc sửa đổi dữ liệu trong một cấu trúc, chúng ta sử dụng dấu chấm (.) :

printf("Name: %s\n", john.name);
printf("Age: %d\n", john.age);
printf("Height: %.1f\n", john.height);

john.age = 31;  // Chúc mừng sinh nhật, John!

Mã này in chi tiết của John và sau đó cập nhật tuổi của anh ấy. Nó giống như reaching vào các túi cụ thể của ba lô của chúng ta.

Sao chép Cấu trúc

Trong C, bạn có thể sao chép một cấu trúc sang một cấu trúc khác cùng loại:

struct Person jane = john;

Điều này tạo ra một Person mới名叫 jane với cùng dữ liệu như john. Nó giống như làm một bản sao chính xác của ba lô của John cho Jane.

Cấu trúc Là Đối số Hàm

Bạn có thể truyền cấu trúc vào hàm, giống như bất kỳ kiểu dữ liệu nào khác:

void printPerson(struct Person p) {
printf("Name: %s, Age: %d, Height: %.1f\n", p.name, p.age, p.height);
}

// Sử dụng
printPerson(john);

Hàm này nhận một cấu trúc Person và in nội dung của nó. Nó giống như handing của bạn ba lô cho ai đó để họ có thể tell bạn bên trong có gì.

Con trỏ đến Cấu trúc

Đôi khi, việc sử dụng con trỏ đến cấu trúc hiệu quả hơn, đặc biệt khi làm việc với các cấu trúc lớn:

struct Person *pJohn = &john;
printf("Name: %s\n", (*pJohn).name);
// Or, hơn nữa:
printf("Age: %d\n", pJohn->age);

Dấu mũi tên (->) là một viết tắt cho việc dereferencing một con trỏ và truy cập một thành viên. Nó giống như có một bản đồ chỉ đến nơi ba lô của bạn đang ở, thay vì mang theo ba lô chính nó.

Trường Bit

Trường Bit cho phép bạn xác định số bit được sử dụng cho các thành viên của cấu trúc:

struct PackedData {
unsigned int flag : 1;
unsigned int data : 31;
};

Cấu trúc này sử dụng chỉ 32 bit bộ nhớ: 1 bit cho flag và 31 bit cho data. Nó giống như có một ngăn nhỏ, chuyên dụng trong ba lô của bạn cho các vật phẩm rất nhỏ.

Bảng các Phương pháp

Dưới đây là bảng tham khảo nhanh các phương pháp chúng ta đã覆盖:

Phương pháp Mô tả Ví dụ
Khai báo Cấu trúc Định nghĩa một cấu trúc mới struct Person { ... };
Khai báo Biến Tạo một biến của kiểu cấu trúc struct Person john;
Khởi tạo Đặt các giá trị ban đầu cho một cấu trúc struct Person john = {"John", 30, 5.9};
Truy cập Thành viên Truy cập hoặc sửa đổi các thành viên của cấu trúc john.age = 31;
Sao chép Cấu trúc Sao chép một cấu trúc sang một cấu trúc khác struct Person jane = john;
Đối số Hàm Truyền cấu trúc vào hàm void printPerson(struct Person p) { ... }
Con trỏ đến Cấu trúc Sử dụng con trỏ cho việc xử lý hiệu quả struct Person *pJohn = &john;
Trường Bit Xác định kích thước bit cho các thành viên struct PackedData { unsigned int flag : 1; };

Và thế là bạn đã có nó! Chúng ta đã unpacked các nguyên tắc cơ bản của cấu trúc trong C. Nhớ rằng, giống như việc học cách tổ chức ba lô của bạn một cách hiệu quả, việc thành thạo cấu trúc đòi hỏi phải luyện tập. Đừng nản lòng nếu nó không ngay lập tức clicked với bạn - tiếp tục mã hóa, tiếp tục thử nghiệm, và sớm bạn sẽ structuring dữ liệu của bạn như một chuyên gia!

Chúc may mắn, các pháp sư C tương lai!

Credits: Image by storyset