Tóm lược về cấu trúc (struct) Cấu trúc (struct) ₫ược sử dụng ₫ể nhóm các dữ liệu liên quan mô tả một ₫ối tượng, các dữ liệu có thể cùng hoặc khác kiểu Định nghĩa kiểu cấu trúc bằng cách khai báo tên các biến thành viên.
Tóm lược cấu trúc (struct) Cấu trúc (struct) ₫ược sử dụng ₫ể nhóm liệu liên quan mơ tả ₫ối tượng, liệu khác kiểu Định nghĩa kiểu cấu trúc cách khai báo tên biến thành viên Định nghĩa kiểu cấu trúc chưa phải ₫ịnh nghĩa biến cụ thể, khơng ₫ược ₫ặt giá trị ₫ầu cho biến Kích cỡ cấu trúc >= tổng kích cỡ thành viên Truy cập biến cấu trúc thơng qua tên biến, tốn tử (.) tên biến thành viên Các kiểu cấu trúc lồng vào nhau, cấu trúc sử dụng mảng, mảng có phần tử cấu trúc, v.v © 2004, HỒNG MINH SƠN Các biến có kiểu cấu trúc gán cho nhau, sử dụng ₫ể khởi tạo cho (khác hẳn với mảng) Có thể sử dụng trỏ ₫ể truy nhập liệu cấu trúc thơng qua tốn tử (*.) tốn tử (->) Hai kiểu cấu trúc có khai báo giống hoàn toàn hai kiểu cấu trúc khác Chương 2: Các yếu tố C C++ 50 2.4.2 Hợp © 2004, HỒNG MINH SƠN enum SignalType {BINARY_8, BINARY_16, ANALOG_1, ANALOG_2}; union SignalValue { unsigned short word; unsigned char byte; float real; double lreal; }; struct Signal { SignalType type; SignalValue value; }; void main() { SignalValue B,W; B.byte = 0x01; W.word = 0x0101; unsigned char b = W.byte; // OK, the lower byte float f = W.real; // meaningless Signal DI1 = {BINARY_8, 0x11}; Signal AI1 = {ANALOG_1,{0}}; Signal AI2; AI2.type = ANALOG_2; AI2.value.lreal = 145.67; } Chương 2: Các yếu tố C C++ 51 Tóm lược hợp Hợp (union) tập hợp (không có cấu trúc chặt chẽ) chứa biến sử dụng chung ô nhớ, ngữ cảnh sử dụng biến riêng biệt Union thường ₫ược sử dụng liệu ₫ầu vào có kiểu khác Các thành viên union không liên quan ₫ến nhau, không tạo thành thực thể thống Kích cỡ union kích cỡ biến lớn Khai báo kiểu union tương tự khai báo struct, ý nghĩa khác hẳn © 2004, HỒNG MINH SƠN Truy nhập biến thành viên tương tự struct, qua biến trực tiếp qua biến trỏ Union chứa struct, struct chứa union, union chứa mảng, phần tử mảng union Chương 2: Các yếu tố C C++ 52 2.5 Điều khiển CT: phân nhánh Các kiểu phân nhánh © 2004, HỒNG MINH SƠN – – – – – if else: Phân nhánh lựa chọn hai trường hợp switch case: Phân nhánh lựa chọn nhiều trường hợp break: Lệnh nhảy kết thúc (sớm) phạm vi return: Lệnh nhảy kết thúc (sớm) hàm goto: Lệnh nhảy tới nhãn (không nên dùng!) Chương 2: Các yếu tố C C++ 53 2.5.1 Cấu trúc if else Lựa chọn trường hợp: sử dụng if if (npoints >= 60) cout = 80 && npoints b) return a; return b; } int max6(int a, int b) { return (a > b)? a: b; } 55 2.5.2 Cấu trúc switch case © 2004, HỒNG MINH SƠN Signal input; int i = 0; while (i++ < 8) { input = readInput(i); // read from input module i switch (input.type) { case BINARY_8: cout