Đến với Bài giảng Tin học đại cương Phần 2: Bài 4 - Con trỏ và mảng trong C các bạn sẽ được tìm hiểu về các vấn đề liên quan đến con trỏ và địa chỉ; mảng. Hy vọng tài liệu là nguồn thông tin hữu ích cho quá trình học tập và nghiên cứu của các bạn.
Trang 1TIN H C Đ I C Ọ Ạ ƯƠ NG Bài 4. CON TR VÀ M NG TRONG C Ỏ Ả
Nguy n Thành Kiên ễ
B môn K thu t máy tính ộ ỹ ậ Khoa Công ngh thông tin – HBK HN ệ Đ
Trang 2 4.2.3. Các thao tác c b n làm vi c trên m ng ơ ả ệ ả
4.2.4. S d ng con tr trong làm vi c v i m ng ử ụ ỏ ệ ớ ả
Trang 3 4.2.3. Các thao tác c b n làm vi c trên m ng ơ ả ệ ả
4.2.4. S d ng con tr trong làm vi c v i m ng ử ụ ỏ ệ ớ ả
Trang 4 4.2.3. Các thao tác c b n làm vi c trên m ng ơ ả ệ ả
4.2.4. S d ng con tr trong làm vi c v i m ng ử ụ ỏ ệ ớ ả
Bài 4. CON TR VÀ M NG TRONG C Ỏ Ả
Trang 54.1.1. Khái ni m con tr ệ ỏ
B nh có th hi u nh m t dãy các byte ộ ớ ể ể ư ộ
nh , m i ô nh đớ ỗ ớ ược xác đ nh m t cách ị ộduy nh t qua m t ấ ộ đ a ch ị ỉ.
T t c các bi n trong m t chấ ả ế ộ ương trình
đượ ư ở ộc l u m t vùng nào đó trong b nh ộ ớ
Trang 64.1.1. Khái ni m con tr ệ ỏ
Khi khai báo m t bi n, chộ ế ương trình d ch s ị ẽ
c p phát cho bi n đó m t s ô nh liên ti p ấ ế ộ ố ớ ế
đ đ ch a n i dung c a bi n, ví d :ủ ể ứ ộ ủ ế ụ
m t bi n ký t đ ộ ế ự ượ c c p phát 1 byte ấ
m t bi n nguyên đ ộ ế ượ c c p phát 2 byte ấ
m t bi n th c đ ộ ế ự ượ c c p phát 4 byte .v.v ấ
Đ a ch c a m t bi n chính là đ a ch c a ị ỉ ủ ộ ế ị ỉ ủ
byte đ u tiên trong s đó. ầ ố
Trang 7int b;
b=0x07D6 &b=3300158
.
.
D6 07
.
3,300,157 3,300,158 3,300,159 3,300,160
1
b
a 41
Trang 94.1.1. Khái ni m con tr ệ ỏ
Cú pháp khai báo m t con tr : ộ ỏ
Kiểu_dữ_liệu *tên_contrỏ;
Ki u c a m t con tr ph thu c vào ki u bi n mà nó ể ủ ộ ỏ ụ ộ ể ế
tr đ n. Trong ví d sau, ta đ nh nghĩa con tr p tr ỏ ế ụ ị ỏ ỏ
.
D6 07
.
3,300,157 3,300,158 3,300,159 3,300,160 1
b
Trang 12 4.2.3. Các thao tác c b n làm vi c trên m ng ơ ả ệ ả
4.2.4. S d ng con tr trong làm vi c v i m ng ử ụ ỏ ệ ớ ả
Bài 4. CON TR VÀ M NG TRONG C Ỏ Ả
Trang 134.1.2. Các phép toán làm vi c ệ liên quan đ n bi n con tr ế ế ỏ
M t đi m m nh c a ngôn ng C là kh năng ộ ể ạ ủ ữ ả
th c hi n tính toán trên các con tr Các ự ệ ỏ
phép toán s h c có th th c hi n trên con ố ọ ể ự ệ
tr là:ỏ
C ng/tr con tr v i m t s nguyên (int, long) và ộ ừ ỏ ớ ộ ố
k t qu là m t con tr cùng ki u ế ả ộ ỏ ể
Tr hai con tr cùng ki u cho nhau, k t qu là ừ ỏ ể ế ả
m t s nguyên. K t qu này nói lên kho ng cách ộ ố ế ả ả (s ph n t thu c ki u d li u c a con tr ) gi a ố ầ ử ộ ể ữ ệ ủ ỏ ở ữ hai con tr ỏ
Chú ý:
Phép toán c ng hai con tr , và nhân chia, l y ph n d trên ộ ỏ ấ ầ ư
con tr là không h p l ỏ ợ ệ
Trang 144.1.2. Các phép toán làm vi c ệ liên quan đ n bi n con tr ế ế ỏ
Con tr void:ỏ
Đ ượ c khai báo nh sau: ư
void *con_tro;
Đây là con tr đ c bi t, con tr không có ki u, nó ỏ ặ ệ ỏ ể
có th nh n giá tr là đ a ch c a m t bi n thu c ể ậ ị ị ỉ ủ ộ ế ộ
b t k ki u d li u nào. Con tr void đ ấ ỳ ể ữ ệ ỏ ượ c dùng làm đ i đ nh n b t k đ a ch nào t tham s ố ể ậ ấ ỳ ị ỉ ừ ố
c a các l i g i hàm. Các l nh sau đây là h p l : ủ ờ ọ ệ ợ ệ
void *p, *q;
int x = 21;
float y = 34.34;
p = &x; q = &y;
Trang 15 4.2.3. Các thao tác c b n làm vi c trên m ng ơ ả ệ ả
4.2.4. S d ng con tr trong làm vi c v i m ng ử ụ ỏ ệ ớ ả
Bài 4. CON TR VÀ M NG TRONG C Ỏ Ả
Trang 16 4.2.3. Các thao tác c b n làm vi c trên m ng ơ ả ệ ả
4.2.4. S d ng con tr trong làm vi c v i m ng ử ụ ỏ ệ ớ ả
Bài 4. CON TR VÀ M NG TRONG C Ỏ Ả
Trang 174.2.1. Khái ni m m ng ệ ả
t : ử
có cùng ki u d li uể ữ ệ
đượ ưc l u tr k ti p nhau trong b nh ữ ế ế ộ ớ
Trang 18 4.2.3. Các thao tác c b n làm vi c trên m ng ơ ả ệ ả
4.2.4. S d ng con tr trong làm vi c v i m ng ử ụ ỏ ệ ớ ả
Bài 4. CON TR VÀ M NG TRONG C Ỏ Ả
Trang 19 int mang_nguyen[10];// m ng 10 ph n t , ki u DL: int ả ầ ử ể
float mang_thuc[4]; // m ng 4 ph n t ,ki u DL: float ả ầ ử ể
char mang_ki_tu[6]; // m ng 6 ph n t ,ki u DL: char ả ầ ử ể
Chú ý: Kích th ướ c c a m ng b ng kích th ủ ả ằ ướ c m t ph n t nhân v i s ph n t ộ ầ ử ớ ố ầ ử
Trang 20M ng m t chi u và m ng nhi u ả ộ ề ả ề
chi u ề
M ng là t p h p các ph n t cùng ki u d ả ậ ợ ầ ử ể ữ
li u, n u m i ph n t c a m ng cũng là m t ệ ế ỗ ầ ử ủ ả ộ
m ng khác thì khi đó ta có m ng nhi u ả ả ề
chi u. ề
Ví d sau khai báo m t m ng g m 6 ph n t , ụ ộ ả ồ ầ ửtrong đó m i ph n t l i là m t m ng g m 5 ỗ ầ ử ạ ộ ả ồ
s nguyên ki u ố ể int. M ng này là m ng 2 ả ả
chi uề
int a[6][5];
float b[3][4][5]; // ???
Trang 23 Ph n t đ u tiên c a m ng m t chi u a[0] s là a[0][0] ầ ử ầ ủ ả ộ ề ẽ
Ph n t ti p theo c a a[0] s là a[0][1] ầ ử ế ủ ẽ
…
Ph n t cu i cùng c a m ng m t chi u a[0] là a[0][4] ầ ử ố ủ ả ộ ề
a[1] là ph n t th hai c a m ng ầ ử ứ ủ ả
Và d dàng tính đ ễ ượ c a[2][3] s là ph n t th 4 c a ph n t ẽ ầ ử ứ ủ ầ ử
th 3 c a a ứ ủ
Trang 24 4.2.3. Các thao tác c b n làm vi c trên m ng ơ ả ệ ả
4.2.4. S d ng con tr trong làm vi c v i m ng ử ụ ỏ ệ ớ ả
Bài 4. CON TR VÀ M NG TRONG C Ỏ Ả
Trang 25 M i m t ph n t c a m ng th c ch t là m t bi n ỗ ộ ầ ử ủ ả ự ấ ộ ế
có ki u d li u là ki u d li u chung c a m ng ể ữ ệ ể ữ ệ ủ ả
for(i = 0; i < n; i++) { printf("\n a[%d] = ", i);
scanf("%d",&a[i]);
}
Trang 26 Chú ý: ch s ph i n m trong kho ng giá ỉ ố ả ằ ả
tr cho phép, n u truy nh p ra ngòai giá tr ị ế ậ ịtính toán s không đúng.ẽ
Trang 27nh t, nh nh t.ấ ỏ ấ
Trang 28 4.2.3. Các thao tác c b n làm vi c trên m ng ơ ả ệ ả
4.2.4. S d ng con tr trong làm vi c v i m ng ử ụ ỏ ệ ớ ả
Bài 4. CON TR VÀ M NG TRONG C Ỏ Ả
Trang 30main() {
int i; int *p;
p = tab;
for (i = 0; i < N; i++) { printf(" %d \n",*p);
p++;
} }
Trang 31 Con tr luôn c n ph i đỏ ầ ả ược kh i t o, ho c ở ạ ặ
b ng cách gán cho nó m t đ a ch nào đó, ằ ộ ị ỉ