Mảng Cấu Trúc Trong C

     

Như bọn họ đã biết, mảng là tập vừa lòng các bộ phận có thuộc kiểu với nhau. Các phần tử đó hoàn toàn rất có thể là kiểu dữ liệu struct.

Bạn đang xem: Mảng cấu trúc trong c

Khai báo một mảng cấu trúc cũng y hệt như khai báo một mảng những kiểu cơ bản. Trong một mảng cấu trúc, mỗi thành phần của mảng đều có kiểu cấu trúc.

Ví dụ 1 mảng gồm kiểu sinh viên và lưu trữ 10 sinh viên, đầu tiên ta vẫn khai báo cấu trúc sinh viên trước và khai báo mảng gồm kiểu sinh viên bao hàm 10 thành phần ở trong hàm main:

Khai báo struct sinhvien bao gồm các ngôi trường Mã Sinh Viên, thương hiệu Sinh Viên, Điểm Sinh Viên:

struct sinhvien int MaSinhVien; char TenSinhVien<25>; float DiemSinhVien;;typedef sinhvien SV;Khai báo mảng bao gồm kiểu sinhvien vào main:

#include struct sinhvien int MaSinhVien; char TenSinhVien<25>; float DiemSinhVien;;//khai bao de dang voi tu khoa SVtypedef sinhvien SV;int main() //mang co kieu sinh vien gom 10 phan tu SV arr_sv<10>;Ta sẽ hình dung mảng SV arr_sv<10> như sau:

*

2.Nhập xuất tài liệu cho mảng chứa struct

Ở trên, ta đã tất cả một mảng cất 10 thành phần là những struct tất cả kiểu sinh viên. Mặc dù các thành phần nằm trong struct sinh viên (Mã Sinh Viên, thương hiệu Sinh Viên, Điểm Sinh Viên) kia hoàn toàn chưa có dữ liệu.

Xem thêm: Cách Phân Biệt Sự Khác Nhau Giữa Chỉnh Hợp Và Tổ Hợp Và Chỉnh Hợp Và Tổ Hợp

Để nhập tài liệu vào mảng đựng struct, ta cần truy cập đến địa chỉ phần tử mảng và cần sử dụng toán tử chấm (.) để truy vấn đến thành phần nằm trong struct.

Ví dụ bên dưới đây, tôi sẽ cần sử dụng vòng lặp for nhằm nhập N sinh viên sau đó hiển thị thông tin sinh viên ra màn trong khi sau:

#include struct sinhvien int MaSinhVien; char TenSinhVien<25>; float DiemSinhVien;;typedef sinhvien SV;int main(){ //khai bao n sinh vien int n; printf("NHAP SO LUONG SINH VIEN: "); scanf("%d", &n); //mang teo kieu sinh vien gom N phan tu SV arr_sv; //duyet cac phan tu trong sở hữu for(int i = 0; i Ở phần ví dụ trên tôi để số lượng sinh viên được nhập vào là N và thực hiện hàm scanf cho bài toán nhập tài liệu số, hàm fflush(stdin) để xóa bộ nhớ lưu trữ đệm tiếp đến kết hợp với gets cho bài toán nhập tài liệu chuỗi.

Xem thêm: 180 Câu Bài Tập Trắc Nghiệm Từ Đồng Nghĩa Trái Nghĩa Cực Hay Có Đáp Án

Viết lại chương trình một bí quyết hoàn chỉnh:

#include struct sinhvien int MaSinhVien; char TenSinhVien<25>; float DiemSinhVien;;typedef sinhvien SV;void nhap(SV arr_sv<>, int n){ //duyet cac phan tu trong sở hữu for(int i = 0; i 3.Khởi sản xuất mảng cấu trúcChúng ta hoàn toàn rất có thể khởi chế tạo ra một mảng có kiểu dữ liệu cấu tạo như, khởi chế tác một mảng thông thường.

#include struct sinhvien int MaSinhVien; char TenSinhVien<25>; float DiemSinhVien;;typedef sinhvien SV;int main(){ //mang teo kieu sinh vien gom 5 phan tu SV arr_sv<5> = //ma, ten, diem 1,"NguyenVanA", 10, 2,"NguyenVanB", 5.5, 3,"NguyenVanC", 7, 4,"NguyenVanD", 8.2, 5,"NguyenVanA", 4.2, ; //duyet 5 sinh vien teo trong mang arr_sv for(int i =0; i

1 NguyenVanA 10.000000

2 NguyenVanB 5.500000

3 NguyenVanC 7.000000

4 NguyenVanD 8.200000

5 NguyenVanA 4.200000


Facebook Twitter Linkedin struct%20sinhvien%20%20%20%20int%20MaSinhVien;%20%20%20%20char%20TenSinhVien%5B25%5D;%20%20%20%20float%20DiemSinhVien;://khai%20bao%20de%20dang%20voi%20tu%20khoa%20SVtypedef%20sinhvien%20SV;int%20main()%20%20%20%20//mang%20co%20kieu%20sinh%20vien%20gom%2010%20phan%20tu%20%20%20%20SV%20arr_sv%5B10%5D;/preTa%20sẽ%20hình%20dung%20mảng%20SV%20arr_sv%5B10%5D%20như%20sau:img%20class=alignnone%20wp-image-858%20size-full%20src=https://sofaxuong.vn/mang-cau-truc-trong-c/imager_1_15475_700.jpg%20alt=%20width=491%20height=346%20/h12.Nhập%20xuất%20dữ%20liệu%20cho%20mảng%20chứa%20struct/h1Ở%20trên,%20ta%20đã%20có%20một%20mảng%20chứa%2010%20phần%20tử%20là%20các%20struct%20có%20kiểu%20sinh%20viên.%20Tuy%20nhiên%20các%20thành%20phần%20trong%20struct%20sinh%20viên%20(Mã%20Sinh%20Viên,%20Tên%20Sinh%20Viên,%20Điểm%20Sinh%20Viên)%20đó%20hoàn%20toàn%20chưa%20có%20dữ%20liệu.Để%20nhập%20dữ%20liệu%20vào%20mảng%20chứa%20struct,%20ta%20cần%20truy%20cập%20đến%20địa%20chỉ%20phần%20tử%20mảng%20và%20dùng%20toán%20tử%20chấm%20(.)%20để%20truy%20cập%20đến%20thành%20phần%20trong%20struct.Ví%20dụ%20dưới%20đây,%20tôi%20sẽ%20dùng%20vòng%20lặp%20for%20để%20nhập%20N%20sinh%20viên%20sau%20đó%20hiển%20thị%20thông%20tin%20sinh%20viên%20ra%20màn%20hình%20như%20sau:pre%20class=EnlighterJSRAW%20data-enlighter-language=c#include%20struct%20sinhvien%20%20%20%20int%20MaSinhVien;%20%20%20%20char%20TenSinhVien%5B25%5D;%20%20%20%20float%20DiemSinhVien;;typedef%20sinhvien%20SV;int%20main()%20%20%20%20//khai%20bao%20n%20sinh%20vien%20%20%20%20int%20n;%20%20%20%20printf(NHAP%20SO%20LUONG%20SINH%20VIEN:%20);%20%20%20%20scanf(%d,%20&n);%20%20%20%20//mang%20co%20kieu%20sinh%20vien%20gom%20N%20phan%20tu%20%20%20%20SV%20arr_sv%5Bn%5D;%20%20%20%20//duyet%20cac%20phan%20tu%20trong%20mang%20%20%20%20for(int%20i%20=%200;%20i%20struct%20sinhvien%20%20%20%20int%20MaSinhVien;%20%20%20%20char%20TenSinhVien%5B25%5D;%20%20%20%20float%20DiemSinhVien;;typedef%20sinhvien%20SV;void%20nhap(SV%20arr_sv%5B%5D,%20int%20n)%20%20%20%20//duyet%20cac%20phan%20tu%20trong%20mang%20%20%20%20for(int%20i%20=%200;%20i%20struct%20sinhvien%20%20%20%20int%20MaSinhVien;%20%20%20%20char%20TenSinhVien%5B25%5D;%20%20%20%20float%20DiemSinhVien;;typedef%20sinhvien%20SV;int%20main()%20%20%20%20//mang%20co%20kieu%20sinh%20vien%20gom%205%20phan%20tu%20%20%20%20SV%20arr_sv%5B5%5D%20=%20%20%20%20%20%20%20%20%20//ma,%20ten,%20diem%20%20%20%20%20%20%20%201,NguyenVanA,%2010,%20%20%20%20%20%20%20%202,NguyenVanB,%205.5,%20%20%20%20%20%20%20%203,NguyenVanC,%207,%20%20%20%20%20%20%20%204,NguyenVanD,%208.2,%20%20%20%20%20%20%20%205,NguyenVanA,%204.2,%20%20%20%20;%20%20%20%20//duyet%205%20sinh%20vien%20co%20trong%20mang%20arr_sv%20%20%20%20for(int%20i%20=0;%20i%20 Pinterest