Tải bản đầy đủ (.pdf) (37 trang)

Ch06 struct array

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 (835.68 KB, 37 trang )

Chương 06
Kiểu cấu trúc
Kiểu mảng – chuỗi

Trần Quang
© 2016

Chương 06: Array - struct

Kỹ thuật lập trình
1


Nội dung






Từ khố typedef
Cấu trúc
Mảng
Chuỗi ký tự

Trần Quang
© 2016

Chương 06: Array - struct

Kỹ thuật lập trình


2


Định nghĩa kiểu mới với typedef


typedef cho phép người lập trình tạo ra tên mới
cho một kiểu dữ liệu đã có.






Tên mới mang lại tính dễ hiểu hơn, trong ngữ cảnh
của bài toán đang xét.
Tên mới giúp rút ngắn mã nguồn

Cú pháp
typedef <tên_kiểu_cũ> <tên_mới>;



Ví dụ
typedef unsigned char BYTE;
BYTE a, b;

Trần Quang
© 2016


Chương 06: Array - struct

Kỹ thuật lập trình
3


kiểu cấu trúc (struct)







Là kiểu dữ liệu phức hợp, bao gồm nhiều thành
phần có thể thuộc các kiểu dữ liệu khác nhau
Các thành phần gọi là: trường dữ liệu (field)
Một biến thuộc kiểu cấu trúc được xem là một tập
hợp nhiều biến đơn lẻ thành một biến duy nhất
Ví dụ


Mỗi sinh viên cần lưu các thơng tin:





Trần Quang
© 2016


Mã số sinh viên
Họ tên
Ngày sinh
Email, …
Chương 06: Array - struct

4 trình
Kỹ thuật lập
4


kiểu cấu trúc (struct)







Tất cả các dữ liệu trong một biến cấu trúc có quan
hệ với nhau tạo thành một khối
Luôn luôn cấp phát cùng nhau và sắp xếp liên tục
trong bộ nhớ
Luôn luôn được huỷ khỏi bộ nhớ cùng nhau
Các mảnh dữ liệu thành phần có thể truy xuất độc
lập, thơng quan tên field.

Trần Quang
© 2016


Chương 06: Array - struct

Kỹ thuật lập trình
5


Khai báo kiểu dữ liệu cấu trúc




Khai báo kiểu cấu trúc
struct <tên cấu trúc> {
<khai báo các trường >
}
Ví dụ
struct sinhvien {
char mssv[8];
char hoten[30];
float dtb;
}

Trần Quang
© 2016

Chương 06: Array - struct

6
Kỹ thuật lập trình

6


Khai báo biến cấu trúc




Cú pháp:
struct <tên cấu trúc> <danh sách biến>;
Ví dụ:
struct sinhvien sv1, sv2, sv3;

Trần Quang
© 2016

Chương 06: Array - struct

7 trình
Kỹ thuật lập
7


Khai báo biến cấu trúc







Cú pháp:
struct <tên cấu trúc> <danh sách biến>;
Ví dụ:
struct sinhvien sv1, sv2, sv3;
Kết hợp khai báo biến với khai báo cấu trúc
struct [tên cấu trúc] {
<khai báo các trường>;
} <danh sách biến>;

Trần Quang
© 2016

Chương 06: Array - struct

8 trình
Kỹ thuật lập
8


Gán giá trị khởi tạo khi khai báo
struct sinhvien {
char mssv[8];
char hoten[30];
float dtb;
S1: Không được khởi động
};
s2: được khởi động không đầy đủ
void main() {
s3: được khởi động đầy đủ
struct sinhvien s1;

struct sinhvien s2 = { "001", "Nguyen Van An" };
struct sinhvien s3 = { "001", "Nguyen Van An", 9.5f };
printf("MSSV: %s\n", s3.mssv);
printf("Ho Ten: %s\n", s3.hoten);
Truy xuất dữ liệu thành phần qua tên gọi
}
Quy tắc: <tên biến>.<tên thành phần>
Trần Quang
© 2016

Chương 06: Array - struct

Kỹ thuật lập trình
9


Kết hợp typedef với struct



Bỏ từ khoá “struct” khi khai báo biến có kiểu struct
Ví dụ:
typedef struct sPoint3D {
float x, y, z;
} Point3D;

cách định nghĩa một tên kiểu mới
là Point3D thông qua typedef

void main(){

struct sPoint3D p1 = {1.0f, 2.0f, 3.0f};
Point3D p2 = {1.0f, 2.0f, 3.0f};
printf("p1 = (%4.1f,%4.1f,%4.1f)\n", p1.x, p1.y, p1.z);
printf("p2 = (%4.1f,%4.1f,%4.1f)\n", p2.x, p2.y, p2.z);
}

Trần Quang
© 2016

Chương 06: Array - struct

Kỹ thuật lập trình
10


Mảng

Trần Quang
© 2016

Chương 06: Array - struct

Kỹ thuật lập trình
11


Khái niệm mảng





Mảng là một kiểu dữ liệu gồm một số hữu hạn
thành phần. Các thành phần có cùng một kiểu, gọi
là kiểu cơ sở hay là kiểu thành phần.
Mỗi phần tử của mảng được tham khảo thông qua
tên mảng và chỉ số của phần tử trong mảng

Trần Quang
© 2016

Chương 06: Array - struct

12trình
Kỹ thuật lập
12


Khái niệm mảng







Mảng là một dãy các phần tử cùng một kiểu nằm
liền kề nhau trong bộ nhớ.
Các phần tử có cùng một kiểu, gọi là kiểu cơ sở
Mỗi phần tử của mảng được tham khảo thông qua
tên mảng và chỉ số của phần tử trong mảng

Ví dụ

Trần Quang
© 2016

Chương 06: Array - struct

Kỹ thuật lập trình
13


Khái niệm mảng



Sáu số này nằm liên tục nhau trên bộ nhớ
Do đó,




Nếu ơ nhớ đầu tiên, chứa giá trị 10, bắt đầu ở BYTE
có địa chỉ 100 trong vùng nhớ của chương trình
Thì







Trần Quang
© 2016

Địa chỉ của ơ nhớ chứa 20: 104
Địa chỉ của ô nhớ chứa 30: 108
Địa chỉ của ô nhớ chứa 40: 112
Địa chỉ của ô nhớ chứa 50: 116
Địa chỉ của ô nhớ chứa 60: 120
Chương 06: Array - struct

Kỹ thuật lập trình
14


Khái niệm mảng





Các phần tử trong mảng được đánh chỉ số để truy xuất
 Phần tử đầu tiên LUÔN LUÔN CÓ chỉ số là 0
 Các phần tử kế tiếp theo là 1, 2, …
Do đó,
 Ơ nhớ chứa 10 có chỉ số là 0
 Ơ nhớ chứa 20 có chỉ số là 1
 Ơ nhớ chứa 30 có chỉ số là 2
 Ơ nhớ chứa 40 có chỉ số là 3
 …


Trần Quang
© 2016

Chương 06: Array - struct

Kỹ thuật lập trình
15


Khái niệm mảng



Để tính địa chỉ của ơ nhớ có chỉ số k, chương trình
dùng cơng thức sau:




Trần Quang
© 2016

Địa chỉ = địa chỉ phần tử đầu tiên + k *(kích thước
phần tử)
Do đó, chương trình dễ dàng chỉ ra ngay một phần
tử có chỉ số bất kỳ => TRUY CẬP NGẪU NHIÊN

Chương 06: Array - struct

Kỹ thuật lập trình

16


Mảng 1 chiều




Cú pháp khai báo
<kiểu dữ liệu> <tên mảng> [<kích thước>];
Ví dụ
// khai báo mảng A gồm 10 phần tử thuộc kiểu int
int A[10];

Trần Quang
© 2016

Chương 06: Array - struct

17trình
Kỹ thuật lập
17


Mảng 1 chiều









Ví dụ:
int a[6];
int b[6] = {10, 20, 30};
int c[6] = {10, 20, 30, 40, 50, 60};
a: mảng gồm 6 số nguyên giá trị các phần tử chưa
xác định
b: mảng gồm 6 số nguyên. Giá trị 3 phần tử đầu là:
10, 20, và 30. Còn 3 phần tử sau chưa xác định
c: mảng gồm 6 số nguyên. Giá trị các phần tử lần
lượt là: 10, 20, 30, 40, 50, và 60

Trần Quang
© 2016

Chương 06: Array - struct

Kỹ thuật lập trình
18


Mảng 1 chiều

Hình ảnh trong
bộ nhớ của các
mảng a, b, và c

Trần Quang

© 2016

Chương 06: Array - struct

Kỹ thuật lập trình
19


Mảng 1 chiều




Số phần tử của mảng phải biết trước thời điểm
biên dịch và là hằng số không âm.
Sử dụng macro




#define MAX_SIZE

Khai báo hằng số nguyên


const int max_size
#define MAX_SIZE 6
void main(){
const int max_size = 10;
int a[MAX_SIZE];

int b[max_size];
}

Trần Quang
© 2016

Chương 06: Array - struct

Kỹ thuật lập trình
20



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×