Khái niệm cấu trúcTrong C, structure gọi tắt là struct ~ kiểu dữ liệu bản ghi record trong Pascal.. Các thành phần dữ liệu trong cấu trúc được gọi là các trường dữ liệu field... Khá
Trang 1TIN HỌC ĐẠI CƯƠNG
PHẦN 2: LẬP TRÌNH BẰNG NGÔN NGỮ C
BÀI 7: CẤU TRÚC (struct)
KHOA C¤NG NGHÖ
INFORMATION TECHNOLOGY
Trang 2Bài 7: Cấu trúc (struct)
7.1 Khái niệm cấu trúc
Trang 3Bài 7: Cấu trúc (struct)
7.1 Khái niệm cấu trúc
Trang 47.1 Khái niệm cấu trúc
Trong C, structure (gọi tắt là
struct) ~ kiểu dữ liệu bản ghi
(record) trong Pascal.
Kiểu dữ liệu cấu trúc (struct) là
kiểu dữ liệu phức hợp bao gồm nhiều
thành phần, mỗi thành phần có thể
thuộc những kiểu dữ liệu khác nhau.
Các thành phần dữ liệu trong cấu
trúc được gọi là các trường dữ liệu
( field ).
Trang 57.1 Khái niệm cấu trúc (tiếp)
“Mô tả” đối tượng có nhiều phần
thông tin, ví dụ quản lý hồ sơ cán
bộ, sinh viên…
Ví dụ: Cấu trúc mô tả sinh viên:
như họ tên, tuổi, kết quả học tập…
nhau
Họ tên có kiểu dữ liệu là xâu kí tự
Tuổi có kiểu dữ liệu là số nguyên
Kết quả học tập có kiểu dữ liệu là số thực.
Trang 6Bài 7: Cấu trúc (struct)
7.1 Khái niệm cấu trúc
Trang 77.2.1 Khai báo kiểu dữ liệu cấu trúc
Trang 87.2.2 Khai báo biến cấu trúc
Trang 97.2.3 Khai báo kết hợp
Có thể kết hợp vừa khai báo kiểu dữ
liệu cấu trúc vừa khai báo biến cấu
Trang 117.2.4 Định nghĩa kiểu dữ liệu cấu trúc
với typedef
Đặt tên mới cho kiểu dữ liệu cấu trúc cú
pháp:
typedef struct tên_cũ ten_moi;
Hoặc có thể định nghĩa kiểu dữ liệu cấu
trúc ngay khi khai báo bằng cú pháp
typedef struct [tên_cũ]
{
//khai_bao_cac_truong;
}danh_sach_cac_tên_mới;
Lưu ý: Được phép đặt
Trang 127.2.4 Định nghĩa kiểu dữ liệu cấu
trúc với typedef (tiếp)
Trang 137.2.4 Định nghĩa kiểu dữ liệu cấu
trúc với typedef (tiếp)
Trang 14Bài 7: Cấu trúc (struct)
7.1 Khái niệm cấu trúc
Trang 167.3.1 Truy nhập các trường dữ liệu
Trang 17Vấn đề vào ra dữ liệu cho các biến struct
Cũng như dữ liệu kiểu mảng, không thể nhập/xuất
dữ liệu trực tiếp cho struct mà cần phải
nhập/xuất dữ liệu lần lượt cho từng trường của
Trang 187.3.2 Phép gán giữa các biến cấu
Trang 197.3.3 Con trỏ cấu trúc
Cú pháp:
struct ten_cau_truc *ten_bien_con_tro_ctruc;
Có 2 cách truy nhập vào
trường dữ liệu của cấu trúc
từ biến con trỏ cấu trúc là
(*ten_bien_con_tro_ctruc).ten_truong_du_lieu
Hoặc:
Trang 20Con trỏ struct
Ví dụ:
struct SinhVien *p; //hoac SinhVien *p;
struct SinhVien sv, *psv;//psv là con trỏ
printf(“Nhap SBD:”);scanf(“%d”,&sv.sbd);
psv = &sv;//lấy địa chỉ của biến sv
printf(“SBD vua nhap:%d”, psv->sbd);
printf(“Nhap lai SBD:”);
scanf(“%d”,&(psv->sbd));
printf(“SBD vua nhap:%d”, (*psv).sbd);
Trang 21Chú ý
Trong ví dụ trước, chúng
ta rút ra một số nhận
xét:
&sv cho ta địa chỉ của struct sv
psv->sbd và (*psv).sbd là tương đương.
Trang 22Bài 7: Cấu trúc (struct)
7.1 Khái niệm cấu trúc
Trang 24Truyền tham số struct cho hàm
Hàm trong C cho phép truyền tham số là
struct Hãy xem ví dụ sau đây (hàm viết thông tin một sinh viên ra màn hình):
Trang 26printf(“\nNhap thong tin cho sinh vien %d”,i+1);
printf(“\nMa so sinh vien:”);
Trang 28Thong tin ve cac sinh vien
Sinh vien thu 1: SV0032 Nguyen Thanh Binh 8.5
Sinh vien thu 2: SV0002 Pham Hong Phuc 9.0
Sinh vien thu 3: SV0046 Le Minh Hoa 10.0
Trang 29Bài tập
Viết 1 chương trình thực hiện những công việc sau:
Yêu cầu người dùng nhập vào một số nguyên dương
n với 5 ≤ n ≤ 20 (có kiểm tra tính hợp lệ của giá trị
được nhập vào, nếu giá trị n nhập vào không thỏa
mãn điều kiện thì yêu cầu nhập lại)
Yêu cầu người dùng nhập vào thông tin của n sinh
viên gồm những mục sau
10
Đưa ra màn hình danh sách các sinh viên cùng
thông tin của họ mà người dùng vừa nhập vào.
Trang 30Bài tập
Viết 1 chương trình thực
hiện những công việc sau
(tiếp):
số thực Đưa ra màn hình danh sách các sinh
viên có điểm thi Tin đại cương nhỏ hơn giá trị số thực vừa nhập vào.
xếp theo chiều giảm dần của điểm thi Tin đại
cương.
tên được sắp xếp theo chiều của bảng chữ cái.
Trang 31Câu hỏi ?