1. Trang chủ
  2. » Đề thi

Bài giảng Lập trình C: Chương 7 - Ngô Công Thắng

20 18 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 152,7 KB

Nội dung

[r]

(1)

Chương Con tr

I Đ a ch trị ỉ ỏ

II Con tr , m ng xâu ký tỏ ả ự

(2)

I Đ a ch trị ỉ ỏ

1 Đ a ch (h ng tr )ị ỉ ằ ỏ 2 Toán t đ a ch &ử ị ỉ

3 Khai báo bi n trế ỏ

4 Truy nh p bi n qua trậ ế ỏ

5 Con tr ỏ void tr NULL

(3)

1 Đ a ch (h ng tr )ị ỉ ằ ỏ

M i byte b nh máy tính có m t đ a ỗ ộ ớ ộ ị

ch Các đ a ch s b t đ u t tr ỉ ị ỉ ố ắ ầ ừ ở đi Ví d có MB b nh đ a ch th p ụ ộ ớ ị ỉ ấ nh t đ a ch cao nh t 1.048.575.ấ ị ỉ ấ

B t kỳ ch ng trình đ c n p vào b ấ ươ ượ ạ ộ

(4)

1 Đ a ch (h ng tr ) ị ỉ ằ ỏ ti pế

Hình 7.1 Đ a ch b nhị ỉ ộ

chương trình 655.359 var1 var2 var3 var4 int char float int 314.810 314.809 314.808 314.807 314.806 314.805 314.804 314.803 314.802 314.801 314.800 314.799 var1 có đ a ch 314.809ị ỉ

var2 có đ a ch 314.808ị ỉ

(5)

2 Toán t đ a ch &ử ị ỉ

Toán t đ a ch ký hi u &, đ c dùng ử ị ỉ ệ ượ

(6)

3 Khai báo bi n trế ỏ

 Vì đ a ch b nh s nên có th l u tr ị ỉ ộ ố ể ữ

trong m t bi n gi ng nh giá tr c a ki u int, ộ ế ố ị ủ ể char float M t bi n mà ch a giá tr đ a ch g i ộ ế ứ ị ị ỉ ọ bi n tr hay g i t t tr N u m t tr ế ỏ ọ ắ ỏ ế ộ ỏ ch a đ a ch c a m t bi n ta nói r ng tr tr ứ ị ỉ ủ ộ ế ằ ỏ ỏ t i bi n đó.ớ ế

 Đ khai báo bi n tr ta dùng cú pháp sau:ể ế ỏ

Ki u* Tên_bi n_con_tr ;ể ế ỏ

(7)

3 Khai báo bi n tr (ti p)ế ỏ ế

 Ví d :ụ

int a; int* ptr; ptr = &a;

L nh khai báo m t bi n tr có tên ptr tr t i ệ ộ ế ỏ ỏ

s nguyên int Nói cách khác tr ptr có th ch a đ a ch ố ỏ ể ứ ị ỉ

c a bi n nguyên.ủ ế

 Đ khai báo nhi u bi n tr tr t i m t ki u d li u ể ề ế ỏ ỏ ộ ể ữ ệ

ta vi t:ế

Ki u *Bi n1, *Bi n2, *Bi n3,…; ể ế ế ế

M c dù d u * đ c nh tên bi n tr nh ng v n nên hi u ặ ấ ể ế ỏ ẫ ể

nó m t ph n c a ki u.ộ ầ ủ ể

(8)

3 Khai báo bi n tr (ti p)ế ỏ ế

 Khi khai báo m t bi n tr bi n tr ộ ế ỏ ế ỏ

s ch a m t giá tr vô nghĩa (tr đ c kh i t o) ẽ ứ ộ ị ượ Giá tr vơ nghĩa có th đ a ch c a m t ô nh ị ể ị ỉ ủ ộ n m ph n ch ng trình c a ta ho c h ằ ầ ươ ủ ặ ệ u hành Đi u s r t nguy hi m n u ta đ a giá ề ề ẽ ấ ể ế tr vào ô nh tr tr t i B i v y, tr c ị ỏ ỏ ậ ướ s d ng m t tr ta ph i đ a đ a ch vào nó.ử ụ ộ ỏ ả ị ỉ

 Con tr tr t i ki u ch ch a đ c đ a ch ỏ ỏ ể ỉ ứ ượ ị ỉ

(9)

4 Truy nh p bi n qua trậ ế ỏ

M t câu h i đ t n u không bi t tên m t ộ ỏ ặ ế ế ộ

bi n mà ch bi t đ a ch c a có truy ế ỉ ế ị ỉ ủ nh p đ c vào bi n khơng? Câu tr l i ậ ượ ế ả ờ có Con tr ch a đ a ch c a m t bi n nên ta ỏ ứ ị ỉ ủ ộ ế có th truy nh p bi n qua tr ể ậ ế ỏ

Đ truy nh p t i bi n tr ptr tr t i ta ể ậ ớ ế ỏ ỏ ớ

(10)

4 Truy nh p bi n qua trậ ế ỏ

 Toán t truy nh p gián ti p ký hi u * nh ng ậ ế ệ

có nghĩa giá tr c a bi n đ c tr t i b i bi n ị ủ ế ượ ỏ ế tr n m bên ph i nóỏ ằ ả , khác v i d u * khai báo ấ bi n tr có nghĩa ế ỏ tr t i

 Ví d :ụ

int v; //Khai báo bi n có ki u intế ể

int* p; //Khai báo bi n tr p tr t i intế ỏ ỏ p = &v; //Gán đ a ch c a bi n v cho tr pị ỉ ủ ế ỏ v = 3; //Gán vào v

*p = 3; //Gán vào v gián ti p qua tr pế ỏ

(11)

5 Con tr tr t i ỏ ỏ ớ void tr NULLỏ

 Ta bi t r ng tr tr t i ki u ch ch a ế ằ ỏ ỏ ể ỉ ứ

đ c đ a ch c a bi n ki u Tuy nhiên ượ ị ỉ ủ ế ể C++ có m t lo i tr đa có th tr t i ộ ỏ ể ỏ b t kỳ ki u d li u Con tr g i tr tr ấ ể ữ ệ ỏ ọ ỏ ỏ t i void Khai báo tr tr t i void nh sau:ớ ỏ ỏ

void* ptr;

 Con tr NULL tr không tr t i b t c gì, ỏ ỏ ỏ ấ ứ

nó ch a giá tr r ng (b ng 0) Đ có tr r ng ta ứ ị ỗ ằ ể ỏ ỗ gán giá tr vào bi n tr Ta có th s d ng tên ị ế ỏ ể ụ h ng đ t o tr r ng.ằ ể ỏ ỗ

(12)

5 Con tr tr t i ỏ ỏ ớ void tr NULL (ti p)ỏ ế

Ví d :

int ivar; float fvar; int* iptr; float* fptr; void* vptr; iptr = &ivar;

//iptr = &fvar; //l i gán float* t i int*ỗ fptr = &fvar;

(13)

6 Các phép toán trỏ

Các phép tốn s h c:ố ọ

 Ch có phép toán dùng đ c v i tr +, -, ỉ ượ ỏ

++,

 Khi c ng ho c tr bi n tr v i m t s s ộ ặ ế ỏ ộ ố ố

đó ph i ngun.ả

 Các phép tốn s h c tác đ ng tr khác ố ọ ộ ỏ

(14)

6 Các phép tốn tr (ti p)ỏ ế

 Ví d : gi s p tr int ch a đ a ch 200, sau ụ ả ỏ ứ ị ỉ

l nhệ ++p;

đ c th c hi n p s có giá tr 202 N u p tr ượ ự ệ ẽ ị ế ỏ

float sau l nh p s có giá tr 204.ệ ẽ ị

Các phép tốn so sánh: có th so sánh hai ể

bi n tr b ng phép toán so sánh Tuy ế ỏ ằ nhiên vi c so sánh ch có ý nghĩa ệ ỉ hai tr ng h p sau:ườ ợ

(15)

6 Các phép toán tr (ti p)ỏ ế

 So sánh hai tr chúng liên quan t i m t đ i ỏ ộ ố

t ng, ch ng h n tr t i m t bi n.ượ ẳ ỏ ộ ế

Phép gán: Có th gán m t bi n tr cho m t ể ộ ế ỏ ộ

bi n tr có ki u tr t i.ế ỏ ể ỏ

L u ýư : Khi dùng toán t tăng ho c gi m v i bi n ử ặ ả ế

con tr tr t i ph i ý v th t th c hi n ỏ ỏ ả ề ứ ự ự ệ phép tốn Ví d : n u ta vi tụ ế ế

*p++;

thì tr s tăng lên ch không ph i bi n ỏ ẽ ứ ả ế tr tr t i tăng lên 1, b i phép tốn * ++ ỏ ỏ m c u tiên, đ c k t h p t ph i qua trái Mu n ứ ượ ế ợ ả ố tăng bi n tr tr t i ta ph i vi t:ế ỏ ỏ ả ế

(16)

7 Con tr tr t i trỏ ỏ ớ ỏ

Trong C++, m t tr có th tr t i m t ộ ỏ ể ỏ ớ ộ

con tr khác, t c m t tr có th ch a ỏ ứ ộ ỏ ể ứ đ a ch c a m t bi n tr khác.ị ỉ ủ ộ ế ỏ

Giá trị

Bi nế

Đ a chị ỉ

Con trỏ

Giá trị

Bi nế

Đ a chị ỉ

Con trỏ

Đ a chị ỉ

(17)

7 Con tr tr t i tr (ti p)ỏ ỏ ớ ỏ ế

 Đ khai báo m t bi n tr tr t i m t tr ta dùng ể ộ ế ỏ ỏ ộ ỏ

thêm d u * n a Ví d :ấ ữ ụ

int** p; //p tr tr t i m t tr intỏ ỏ ộ ỏ

 Đ truy nh p t i bi n qua tr tr t i tr ta ph i dùng ể ậ ế ỏ ỏ ỏ ả

hai l n toán t truy nh p gián ti p Ki u truy nh p g i ầ ậ ế ể ậ ọ

truy nh p gián ti p b i (Multiple Indirection) Ví d :ậ ế ộ ụ

char ch; char* p; char** mp;

ch='A'; p=&ch; mp=&p;

(18)

II Con tr , m ng xâu ký tỏ ả ự

1 Con tr m ngỏ ả

(19)

1 Con tr m ngỏ ả

 Con tr đ c s d ng đ truy nh p vào ph n t c a m ng ỏ ượ ụ ể ậ ầ ủ ả

và làm đ i s truy n vào hàm Và m ng làm đ i s ố ố ề ả ố ố

truy n vào hàm tr r t h u ích.ề ỏ ấ ữ

 Các ph n t c a m ng có th đ c truy nh p qua ký hi u c a ầ ủ ả ể ượ ậ ệ ủ

m ng ([]) ho c ký hi u c a tr (*) Ví d :ả ặ ệ ủ ỏ ụ

int a[5]={31,54,77,52,93}; int i;

//Dua bang ky hieu cua mang for(i=0;i<5;i++) printf("%i ",a[i]); //Dua bang ky hieu cua tro

(20)

1 Con tr m ng (ti p)ỏ ả ế

 Bi u th c *(a+i) t ng đ ng v i a[i] Ví d , v i ể ứ ươ ươ ụ

i=2 *(a+2) ph n t th (có giá tr 77) ầ ứ ị

 T i *(a+2) l i ph n t th 3? Nh ta bi t, ạ ầ ứ ế

Ngày đăng: 09/03/2021, 06:32

TỪ KHÓA LIÊN QUAN