Bài giảng Hệ thống máy tính và Ngôn ngữ lập trình: Chương 13 - PGS.TS. Đặng Thành Tín

27 63 0
Bài giảng Hệ thống máy tính và Ngôn ngữ lập trình: Chương 13 - PGS.TS. Đặng Thành Tín

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Hệ thống máy tính và Ngôn ngữ lập trình - Chương 13: Pointer cung cấp cho người học các kiến thức: Khái niệm, thao tác trên Pointer, Pointer và mảng, hàm trả về Pointer và mảng, Pointer và việc định vị bộ nhớ di động,... Mời các bạn cùng tham khảo.

CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 Kiểu STRUCT 13.2 Kiểu UNION 13.3 Kiểu ENUM (Enumerated) 13.4 Đònh nghóa kiểu TYPEDEF Bài tập cuối chương CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.1 Khái niệm - Khai báo struct Struct (tạm diïch cấu trúc) kiểu liệu phức hợp tạo từ kiểu liệu khác, kiểu liệu sử dụng khai báo cho biến thành phần biến kiểu struct struct tên_cấu_trúc { Khai báo biến thành phần }; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.1 Khái niệm - Khai báo struct struct sinh_viên { }; CuuDuongThanCong.com char ma_so[10]; char ho_ten[40]; int tuoi; char dia_chi[80]; https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.1 Khái niệm - Khai báo struct Cú pháp khai báo biến cấu trúc giống khai báo biến bình thường: struct tên_struct tên_biến; Ví dụ: struct sinh_vien sv1, sv2; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.1 Khái niệm - Khai báo struct Ví dụ: struct sinh_viên { char ma_so[10]; char ho_ten[40]; int tuoi; char dia_chi[80]; } sv1, sv2; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.1 Khái niệm - Khai báo struct 10 byte 40 byte byte 80 byte ma_so ho_ten tuoi dia_chi CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.1 Khái niệm - Khai báo struct Ví dụ: struct sinh_vien sv1 = { "4950897", "Tran van Vinh", 21, "42 Truong Cong Dinh p.13 q.TB"}; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.1 Khái niệm - Khai báo struct Để truy xuất thành phần biến cấu trúc, C có toán tử chấm “.” để lấy thành phần Ví dụ: strcpy (sv1.ma_so, 4950897"); strcpy (sv1.ho_ten, Tran van Dinh"); sv1.tuoi = 21; strcpy (sv1.dia_chi, "42 Truong Cong Dinh p.13 q.TB"); CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.1 Khái niệm - Khai báo struct C cho phép gán cấu trúc kiểu cho qua tên biến cấu trúc thay phải gán thành phần cho Ví dụ: sv2 = sv1; Ví dụ 14.8 (GT) CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.1 Khái niệm - Khai báo struct Các thành phần biến struct biến bình thường, nên ta lấy đòa chúng, đòa pointer trỏ đến thành phần tương ứng Ví dụ 14.9 (GT) CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.3 Pointer tới struct Cú pháp khai báo biến pointer sau: struct tên_cấu_trúc *tên_pointer; Ví dụ : struct sinh_vien a, *psv; psv =&a; hoaëc struct sinh_vien sv[20], *psv; psv =sv; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.3 Pointer tới struct Việc truy xuất đến thành phần cấu trúc thông qua pointer thực toán tử lấy thành phần đối tượng pointer, ký hiệu -> (có thể gọi toán tử mũi tên) Ví dụ: printf ("Ho ten sinh vien: %s \n", psv -> ho_ten); hay printf ("Ho ten sinh vien: %s \n", (*psv).ho_ten); CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.3 Pointer tới struct Ví dụ 7.16 (SGT) C lại cho phép khai báo struct mà thành phần lại có pointer đến cấu trúc kiểu Ví dụ: struct node { char message[81]; struct node *next; }; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.4 Struct dạng field C cho phép ta khai báo thành phần struct theo bit nhóm bit Một thành phần gọi field (tạm dòch vùng) struct tên_cấu_trúc { kiểu tên_vùng 1: số_bit1; kiểu tên_vùng 2:số_bit2; } tên_biến; Với kiểu unsigned, signed int CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.4 Struct dạng field Ví dụ: struct date { unsigned day: 5; unsigned month: 4; unsigned year: 6; int: 0; } ngay; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.4 Struct dạng field Chú ý: -Mỗi vùng dài tối đa 16 bit (một int) cấp chỗ int, nằm hai int khác -Sự phân bố bit cho field int struct (từ trái sang phải hay ngược lại), không phân biệt -Mọi thao tác thực biến kiểu field có liên quan đến đòa không thực CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.4 Struct dạng field Ví dụ: Khi khai báo struct vi_du { unsigned field1: unsigned field2: unsigned field3: unsigned field4: unsigned field5: CuuDuongThanCong.com 7; 5; 2; 6; 7; } vd; https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.1 KIỂU STRUCT 13.1.4 Struct dạng field Ví dụ: CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.2 KIỂU UNION Trong ngôn ngữ C có kiểu liệu union (tạm dòch kiểu hợp nhất), kiểu liệu đặc biệt mà khai báo ứng với vùng nhớ, giá trò thời điểm khác có kiểu khác tùy vào việc sử dụng biến thành phần CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.2 KIỂU UNION Ví dụ: Có khai báo union sau: union thu { char c; int i; float f; double d; }; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.2 KIỂU UNION Khai báo biến kiểu union: union tên_union { khai_báo_biến_thành_phần } biến, biến [, ]; union tên_union biến, biến [ ]; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.2 KIỂU UNION Ví dụ: union thu { char c; int i; float f; double d; } a, b; hoaëc union thu a, b; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.2 KIỂU UNION Để truy xuất đến biến thành phần biến thuộc kiểu uinion, ta dùng toán tử chấm “.” Ví dụ: union thu a; a.c = 'a'; Ta khai báo biến pointer đến biến kiểu union Ví dụ: union thu *pthu, a; pthu = &a; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.2 KIỂU UNION Việc truy xuất đến thành phần union qua pointer thực toán tử mũi tên, để lấy thành phần union pointer đến Ví dụ: pthu->c = 'A'; Ví dụ 7.30 (SGT) Kiểu union lấy kích thước tính theo byte qua toán tử sizeof, ví dụ: sizeof (union thu); CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13.3 KIỂU ENUM (ENUMERATED) 13.4 ĐỊNH NGHĨA KIỂU BAÈNG TYPEDEF CuuDuongThanCong.com https://fb.com/tailieudientucntt ... https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13. 1 KIỂU STRUCT 13. 1.1 Khái niệm - Khai báo struct Kiểu struct lấy kích thước tính theo byte nhờ toán... Cong Dinh p .13 q.TB"); CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13. 1 KIỂU STRUCT 13. 1.1 Khái niệm - Khai báo struct... Cong Dinh p .13 q.TB"}; CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 13 CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC VÀ KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA 13. 1 KIỂU STRUCT 13. 1.1 Khái niệm - Khai báo struct

Ngày đăng: 11/01/2020, 19:09

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan