Danh mục

Bài giảng Lập trình C: Chương 7 - Cấu trúc

Số trang: 21      Loại file: ppt      Dung lượng: 308.00 KB      Lượt xem: 24      Lượt tải: 0    
tailieu_vip

Phí tải xuống: 1,000 VND Tải xuống file đầy đủ (21 trang) 0
Xem trước 3 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng "Lập trình C: Chương 7 - Cấu trúc" được biên soạn với các nội dung chính sau: Định nghĩa cấu trúc và khai báo biến cấu trúc; Khởi đầu giá trị cho cấu trúc; Truy cập đến các thành phần của cấu trúc; Mảng các cấu trúc; Cấu trúc lồng nhau;... Mời các bạn cũng tham khảo bài giảng tại đây!
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình C: Chương 7 - Cấu trúc CHƯƠNG 7 CẤU TRÚC Cấu  trúc  là  tập  hợp  của  một  hoặc  nhiều  biến, có thể khác kiểu nhau,  được nhóm lại dưới  dạng một tên duy nhất cho tiện xử lý. (Giống cấu  trúc Record trong Pascal). Cấu  trúc  giúp  cho  việc  tổ  chức  các  dữ  liệu  phức tạp, đặc biệt trong những chương trình lớn vì  trong  nhiều  tình  huống  chúng  cho  phpé  nhóm  các  biến có liên quan lại  để xử lý như một  đơn vị thay  vì như các thực thể tách biệt. I. Định nghĩa cấu trúc và khai báo biến cấu trúc 1. Định nghĩa cấu trúc struct  {  ;  ; ... } Trong đó: struct: Là từ khoá Tên_kiểu_cấu_trúc: là tên bất kỳ, do người sử  dụng đặt Ví dụ: struct  Date {    int  day;    int  month;    int year; }; 2. Định nghĩa cấu trúc bằng typedef Nếu  một  cấu  trúc  được  định  nghĩa  với  tên_kiểu_cấu_trúc  thì  ta  có  thể  cùng  typedef  đê  định nghĩa như sau: Typedef struct    ; Ví dụ: typedef struct Date DATE; Nếu một cấu trúc chưa định nghĩa, thì ta có thể  dùng typedef để định nghĩa: Typedef struct [Tên_kiểu_cấu_trúc] {  ;  ; ... } ; Ví dụ: Với ví dụ trên ta có thể dùng typedef để định nghĩa  lại như sau: typedef struct { int day; int month; int year; } DATE; 3. Khai báo biến cấu trúc Khai báo kết hợp: struct  {  ;  ; ... } ; Ví dụ: struct Date { int day; int month; int year; } date, *pd; Khai báo riêng lẽ:  Dùng  Tên_kiểu_bản_ghi  hoặc  thông  qua  tên  cấu trúc đã được định nghĩa bằng typedef +  Dùng tên_kiểu_cấu_trúc: struct   Ví dụ: struct Date date,*pd; +  Dùng tên định nghĩa bằng typedef   Ví dụ: DATE date,*pd II. Khởi đầu giá trị cho cấu trúc: Ta có thể khởi đầu giá trị cho một cấu trúc theo  phương cách như là khởi  đầu giá trị cho mảng.  Theo  sau  tên_biến_cấu_trúc  là  dấu  bằng  (=),  sau  đó  là  danh  dách  các  giá  trị  khởi  đầu  được  đặt trong các dấu móc {}. Các giá trị khởi  đầu  có  cùng  kiểu  với  các  trường  tương  ứng  trong  cấu trúc. Ví dụ: DATE date = {12, 3, 2003} III. Truy cập đến các thành phần của cấu trúc: Có hai cách tham chiếu  đến các thành phần của  cấu trúc tương ứng với hai trường hợp sau: Nếu nó là một biến cấu trúc: Ta  dùng  toán  tử  dấu  chấm  (.)  để  tham  chiếu  đến các trường (thành phần) của cấu trúc. Cú pháp:   .   Nếu  nó  là  một  biến  con  trỏ  trỏ  đến  cấu  trúc: Ta dùng toán tử mũi tên (­>) để tham chiếu đến. Cú pháp: ­> Ví dụ: struct Date { int day; int month; int year; } date; typedef struct Date DATE Với  các  khai  báo  trên  ta  có  các  cách  tham  chiếu  sau: date.day=18; date.month=4; date.year=2003; Hoặc: p­>day = 18 p­>month=4; p­>year=2003; Các phép toán con trỏ tương đương với: (*p).day=18; (*p).month=4; (*p).year=2003; Gán  hai  biến  cấu  trúc  cho  nhau(cùng  kiểu  cấu  trúc) Ví dụ: struct Date d={18,4,2003}; struct Date today; today=d; Có  thể  lấy  địa  chỉ  các  trường  của  cấu  trúc,  kết  quả là con trỏ trỏ đến thành phần tương ứng. Ví dụ: scanf(“%2d ­ %2d %4d”, &today.day,  &today.month, &today.year); IV. Mảng các cấu trúc Vì cấu trúc là khối  đối tượng dữ liệu, do  đó hoàn toàn  có  khả  năng  tạo  ra  một  mảng  các  cấu  trúc.  Khai  báo  mảng các cấu truc như sau: struct   []; Hoặc là dùng tên đã được khai báo bởi typedef:  []; Ví dụ: Khai báo mảng cấu trúc: struct Date aa[10]; DATE ab[10]; Lúc đó để tham chiếu  đến các trường ta có thể dùng như  sau: aa[2].month = 4; V. Cấu trúc lồng nhau Một cấu trúc được gọi là lồng nhau nếu có một  trong  các  trường  của  cấu  trúc  này  lại  có  kiểu  cấu trúc. Cấu trúc lồng nhau thường  được dùng  phổ  biến  trong  lập  trình  C  bởi  vì  nó  cho  phép  tạo ra các dữ liệu có thứ bậc. Vi dụ: Tạo cấu trúc  để lưu thông tin ngày sinh  của một người. typedef struct  { char name[30]; struct { int day; int month; int year; } birth_day; } BDATE; Hoặc: typedef struct { char name[30]; struct Date birth_day; } BDATE; Hoặc typedef { char name[30]; DATE birth_day; }BDATE; Tham chiếu  đến các thành phần của cấu trúc lồng  nhau  thì  hoàn  toàn  giống  với  việc  tham  chiếu  trong  cấu  trúc  không  lồng  nhau,  tuy  chỉ  có  những  trường  chứa cấu trúc thì phải thêm tên biến cấu trúc đó vào. Ví dụ Với  cấu  trúc  vừa  định  nghĩa  ở  ví  dụ  trên,  ta  tham  chiếu  đến các thành phần của biến ngaysinh có kiểu  BDATE là: Tên: ngaysinh.name=“Tran Van A”; Ngày sinh: ngaysinh.birth_day.day=19; ngaysinh.birth_day.month=04; ngaysinh.birth_day.year=2003; Về mặt lý thuyết thì không có bất kỳ một giới hạn  nào về số mức lồng nhau của cấu trúc. Nhưng lúc đó các  tham chiếu đến các trường sẽ càng trở nên phúc tạp và  khó đọc hơn. Cấu trúc tự tham chiếu: Các cấu trúc gọi là tự tham chiếu nếu nó chứa một  trường là con trỏ trỏ đến chính nó. Ví dụ: struct a { int a,b; float c; struct a *ptoa; }; Tính tham chiếu trước (Forward  Referencing) Tính chất này cho phép ta  đưa ra các khai báo các  con trỏ trỏ  đến các cấu trúc chưa được định nghĩa,  đặc  tính  ...

Tài liệu được xem nhiều: