Tải bản đầy đủ (.ppt) (20 trang)

Khai báo và khởi tạo cấu trúc trong ngôn ngữ c

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (155.75 KB, 20 trang )

NGÔN NGỮ LẬP TRÌNH C/C+
+
(Bài giảng tuần 8)
Tin học cơ sỏ II
2
Nội dung

Kiểu dữ liệu có cấu trúc

Cấu trúc

Hợp

Trường

Kiểu liệt kê
Kiểu cấu trúc
Tin học cơ sỏ II
4
Khai báo và khởi tạo cấu trúc
struct <tên kiểu>
{
các thành phần;
} [<danh sách biến>];

Mỗi thành phần (một trường) là một
khai báo biến

Phần <danh sách biến> có thể có hoặc
không
Tin học cơ sỏ II


5
Khai báo biến cấu trúc
// Khai báo trong C
struct <tên cấu trúc> <danh sách biến>;
// Khai báo trong C++
<tên cấu trúc> <danh sách biến>;
Ví dụ:
struct vector {
double x, y, z;
};
struct vector v1, *v2; // Khai báo vector trong C
vector v3, *v4; // Khai báo vector trong C++
Tin học cơ sỏ II
6
Truy cập các thành phần cấu trúc

Nếu var là một biến cấu trúc và m là
thành phần của cấu trúc thì cách truy cập
đến thành phần là var.m

Nếu pvar là một biến con trỏ cấu trúc và
m là thành phần của cấu trúc thì cách truy
cập đến thành phần là pvar->m

Ví dụ:

Thành phần x, y, z của các vector trong ví dụ
trên: v1.x, v1.y, v1.z; v2->x, v2->y, v2->z
Tin học cơ sỏ II
7

Phép gán và khởi tạo cấu trúc

Khác với biến mảng, ta có thể gán hai biến
cấu trúc cùng kiểu.

Ví dụ:
struct vector v1, v2, v3 = {1, 1, 1};
v1.x = 0; v1.y = 0; v1.z = 0;
v2 = v1; // Gán cấu trúc
Hàm và cấu trúc
Tin học cơ sỏ II
9
Con trỏ và địa chỉ cấu trúc

Khai báo con trỏ đến cấu trúc:

struct <tên cấu trúc> *p;

Truy cập đến các thành phần:

p-><tên thành phần>, hoặc

*p.<tên thành phần>

Địa chỉ các thành phần:

&(p-><tên thành phần>)
Tin học cơ sỏ II
10
Đối của hàm là cấu trúc


Một cấu trúc có thể được sử dụng để làm
đối của hàm dưới các dạng sau đây:

Là một biến cấu trúc, khi đó tham đối thực sự
là một cấu trúc.

Là một con trỏ cấu trúc, tham đối thực sự là địa
chỉ của một cấu trúc.

Là một tham chiếu cấu trúc, tham đối thực sự
là một cấu trúc.

Là một mảng cấu trúc hình thức hoặc con trỏ
mảng, tham đối thực sự là tên mảng cấu trúc.
Tin học cơ sỏ II
11
Giá trị của hàm là cấu trúc

Cũng tương tự như các kiểu dữ liệu cơ
bản, giá trị trả lại của một hàm cũng có thể
là các cấu trúc dưới các dạng sau:

là một biến cấu trúc.

là một con trỏ cấu trúc.

là một tham chiếu cấu trúc.
Cấu trúc với thành phần kiểu
bit (trường)

Tin học cơ sỏ II
13
Khái niệm

Thông thường các biến trong C, C++ sử
dụng một số nguyên các byte để lưu trữ

Trong các trường hợp cần thao tác với các
bit, ta sử dụng khai báo trường
Tin học cơ sỏ II
14
Khai báo trường
struct <tên cấu trúc> {
int <tên trường>:<số bit>;

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

}

Chú ý: Tên trường bit phải có kiểu int
hoặc unsigned int
Tin học cơ sỏ II
15
Khai báo kiểu mới

typedef <tên kiểu> <tên kiểu mới>;

Ví dụ:
typedef struct vector vector_t;
typedef struct {

int ngay, thang, nam;
} Date;
Kiểu hợp (Union)
Tin học cơ sỏ II
17
Khai báo
union <tên kiểu> {
Danh sách các thành phần;
};

Cách truy cập đến các thành phần: Giống
như kiểu cấu trúc
Kiểu liệt kê
Tin học cơ sỏ II
19

Có thể gán các giá trị nguyên liên tiếp (tính
từ 0) cho các tên gọi cụ thể bằng kiểu liệt
kê theo khai báo sau đây:

enum tên_kiểu { d/s tên các giá trị };

Ví dụ:

enum Bool {false, true};
Khai báo
Tin học cơ sỏ II
20
Sử dụng kiểu liệt kê
Biến tham chiếu

int i;
int &j=i; // j là một cách tham chiếu khác
// của biến i
j = 5; // Sau lệnh gán này i cũng có giá trị 5
Biến tham chiếu phải được khởi tạo khi
khai báo

×