Hướng dẫn lập trình C trên Linux phần 27 - Mảng cấu trúc

theanh

Administrator
Nhân viên
Trong loạt bài hướng dẫn lập trình C đang diễn ra này, gần đây chúng ta đã thảo luận về các cấu trúc. Chúng ta đã đề cập đến những điều cơ bản về cấu trúc, cách sử dụng cấu trúc với các hàm, cũng như khái niệm về con trỏ đến cấu trúc.

Bây giờ, mở rộng hơn nữa về khái niệm cấu trúc, chúng ta sẽ thảo luận về cách tạo một mảng các cấu trúc bằng các ví dụ dễ hiểu.

Mảng các cấu trúc trong ngôn ngữ lập trình C​

Vậy chúng ta hãy bắt đầu. Sau đây là một cấu trúc đơn giản có tên 'student_details' mà như bạn thấy, có thể được sử dụng để lưu trữ số báo danh và điểm của sinh viên:
Mã:
struct student_details{
int roll_no;
int marks;
};
Giả sử có tổng cộng 5 sinh viên và yêu cầu là chấp nhận thông tin đầu vào từ người dùng về thông tin chi tiết của những sinh viên này. Sau đó, một cách để viết mã cho việc này là:
Mã:
#include 

struct student_details{
int roll_no;
int marks;
};

int main()
{
 struct student_details obj1;
 struct student_details obj2;
 struct student_details obj3;
 struct student_details obj4;
 struct student_details obj5;
 ...
 ...
 ...
Hoặc có thể viết như thế này:
Mã:
#include 

struct student_details{
int roll_no;
int marks;
};

int main()
{
 struct student_details obj1, obj2, obj3, obj4, obj5;
 ...
 ...
 ...
Bây giờ, không có hại gì nếu bạn làm theo các cách tiếp cận đã đề cập ở trên. Mối quan tâm duy nhất nảy sinh là liệu các cách tiếp cận này có khả năng mở rộng hay không. Ý tôi là, nếu thay vì 5, bạn cần tạo, chẳng hạn, 50 đối tượng hoặc thể hiện. Trong trường hợp đó, việc làm theo các cách tiếp cận này chắc chắn sẽ làm cho việc viết mã và bảo trì phức tạp hơn nhiều.

Vậy có giải pháp nào không? Vâng, có. Một cách tốt hơn là tạo một mảng có cấu trúc 'student_details'. Sau đây là cách thực hiện:
Mã:
struct student_details obj[5];
Sau đây là một chương trình hoàn chỉnh sử dụng mảng cấu trúc này:
Mã:
#include 

struct student_details{
int roll_no;
int marks;
};

int main()
{
 struct student_details obj[5];
 int i;
 
 for(i=0;i
 
Back
Bên trên