KIỂU CẤU TRÚC (STRUCT)

Một phần của tài liệu Giáo trình tin học cơ sở A pot (Trang 87 - 90)

12.2.1 Khái niệm

Cấu trúc (struct) là một dạng dữ liệu gồm nhiều thành phần khác kiểu. Mỗi thành phần được truy xuất bằng một định danh gọi là trường (field).

12.2.2 Khai báo

Kiểu dữ liệu cấu trúc được khai báo theo cú pháp như sau:

Cú pháp khai báo kiu cu trúc

struct <tên kiểu cấu trúc> {

<kiểu 1> <tên trường 1>; <kiểu 2> <tên trường 2>; …

<kiểu n> <tên trường n>; };

Ví dụ:

struct SinhVien {

char hoten[30]; float toan, ly, hoa; };

Khai báo biến cĩ thể dựa trên khai báo kiểu (khơng tường minh) như sau:

Cú pháp khai báo biến cu trúc (khơng tường minh)

struct <tên kiểu cấu trúc> {

<kiểu 1> <tên trường 1>; <kiểu 2> <tên trường 2>; …

<kiểu n> <tên trường n>; };

Hoặc khai báo biến trực tiếp (tường minh) như sau:

Cú pháp khai báo biến cu trúc (tường minh)

struct <tên kiểu cấu trúc> {

<kiểu 1> <tên trường 1>; <kiểu 2> <tên trường 2>; …

<kiểu n> <tên trường n>; } <tên biến cấu trúc>;

Ví dụ:

struct SinhVien {

char hoten[30]; float toan, ly, hoa;

} sv1, sv2, sv3; // Tuong minh

struct SinhVien sv4, sv5; // Khong tuong minh

Cách khai báo dạng tường minh cho ta dễ nhận thấy mối quan hệ giữa biến và trường. Tuy nhiên trong cấu trúc chương trình của C thường địi hỏi khai báo tham số bằng định danh kiểu nên việc khai báo tường minh như trên ít được sử dụng.

Để khởi tạo giá trị cho biến cấu trúc, ta sử dụng cách sau:

Cú pháp khai báo biến bn ghi (tường minh)

struct <tên kiểu cấu trúc> {

<kiểu 1> <tên trường 1>; <kiểu 2> <tên trường 2>; … (adsbygoogle = window.adsbygoogle || []).push({});

<kiểu n> <tên trường n>;

Ví dụ:

struct SinhVien {

char hoten[30]; float toan, ly, hoa;

} sv1 = {“Nguyen Van A”, 10, 7.5, 9}, sv2, td3;

12.2.3 Truy xuất dữ liệu kiểu bản ghi

Chúng ta khơng thể nhập xuất trực tiếp dữ liệu kiểu cấu trúc mà chỉ cĩ thể nhập xuất thơng qua các trường của cấu trúc đĩ.

Để truy xuất đến trường của cấu trúc ta sử dụng tốn tử chấm.

Cú pháp truy xut đến các trường ca cu trúc

<tên biến cấu trúc>.<tên trường>

Ví dụ

struct SinhVien sv;

strcpy(sv.hoten, “Nguyen Van A”); sv.toan = 10;

sv.ly = 7.5; sv.hoa = 9;

printf(“Ho ten sinh vien: %s\n”, sv.hoten);

printf(“DTB: %.2f”, (sv.toan + sv.ly + sv.hoa)/3);

12.2.4 Gán dữ liệu kiểu bản ghi

Đối với 2 dữ liệu bản ghi cĩ cùng kiểu, chúng ta cĩ thể thực hiện phép gán theo các cách sau đây:

Thơng qua các trường (tường minh)

<biến cấu trúc đích>.<trường 1> :=

<biến cấu trúc nguồn>.<trường 1>; <biến cấu trúc đích>.<trường 2> :=

<biến cấu trúc nguồn>.<trường 2>; …

Sử dụng lệnh gán

<biến cấu trúc đích> = <biến cấu trúc nguồn>;

Ví dụ:

struct SinhVien {

char hoten[30]; float toan, ly, hoa;

} sv1 = {“Nguyen Van A”, 10, 7.5, 9}, sv2; sv2 = sv1; // Cach 1

strcpy(sv2.hoten, sv1.hoten); // Cach 2

sv2.toan = sv1.toan; sv2.ly = sv1.ly; sv2.hoa = sv1.hoa; (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Giáo trình tin học cơ sở A pot (Trang 87 - 90)