Danh mục

Bài 8 - Con trỏ (Pointer)

Số trang: 17      Loại file: pdf      Dung lượng: 103.08 KB      Lượt xem: 1      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Con trỏ Một con trỏ hay một biến con trỏ là: ¨ một biến chiếu đến một ô nhớ. ¨ nó lưu vị trí/địa chỉ của ô nhớ đó. n Hai ứng dụng chính: ¨ Truy nhập gián tiếp ¨ Bộ nhớ động n Vấn đề kỹ thuật: Nếu P là một biến con.
Nội dung trích xuất từ tài liệu:
Bài 8 - Con trỏ (Pointer)Bài 8CON TR(POINTER)N i Dung1. Khái ni m con tr2.Các toán t con tr3. Phép tính s h c trên con tr4.Con tr và m ng5.Con tr và chu i6.M ng con tr7.Null pointer8.Tr gián ti p1. Khái ni m con tr Con tr là m t bi n ch a m t a ch b nh . Thông thư ng a ch này là v trí c a m t bi n khác. N u X ch a a ch c a Y thì ta nói X tr n Y Bi n con tr ph i ư c khai báo như sau: ki u *tên bi nVí d : khai báo m t bi n p là con tr tr n s nguyên int *p2.Các toán t con tr Có hai toán t c bi t ư c dùng v i con tr : * và &. Toán t & tr v a ch b nh c a toán h ng. Ví d : ptr = &x ;// &x có c là a ch c a x Toán t * tr v giá tr c a bi n ư c t t i a ch ư c ch ra trong toán h ng. Ví d : giatri = *ptr ;//*ptr có th c là n i dung t i a ch ptr#include using namespace std;int main(){ int x; int *ptr; int giatri; x = 3200; ptr = &x; giatri = *ptr; cout a ch b nh 0 1 2 100 101 ptr x giatri B nh 100 3200 ptr = &x ; 0 1 2 100 101 ptr x giatri 100 3200 3200 giatri = *ptr Có th gán giá tr vào v trí ư c ch nh b i m t con tr ví d : *p = 121 ;// t i v trí ư c ch b i p, gán giá tr 121. Có th tăng gi m giá tr n i dung t i v trí ư c ch nh b i p b ng toán t ++, hay --ví d : (*p)++ (*p)--3. Phép tính s h c trên con tr Có b n phép toán s h c ư c th c hi n i v i con tr là ++, --, +, - Ví d con tr s nguyên pi có giá tr 2000 (nó ch a a ch 2000). Gi s s nguyên 32 bit thì sau ki th c hi n câu l nh pi++; n i dung c a pi là 2004 pi = pi + 8; //làm cho pi tr n ph n t th 8Vi t chương trình t o m t m ng a g m 10 ph n t và in ra a ch c a các ph n t này #include using namespace std; int main() { int *p, i, a[10]; p = a; for (i = 0; i4.Con tr và m ng Trong C++, m ng và con tr có quan h g nví d : char str[80]; char *p; p = str; Con tr ư c gán a ch c a ph n t m ng Vi t tên m ng không có index tương ương v i con tr ch n ph n t th 1 (str[0]) Mu n truy xu t n ph n t th 4 có th dùng *(p+3) Vi t chương trình nh p vào m t câu r i in m i t trên m t hàng, dùng con tr#include #include while (*p) {using namespace std; q = token;int main() while (*p != && *p) { *q = *p;{ q++; p++; char str[80], token[80], *p, *q; } cout V i con tr có th ư c truy xu t theo ch s như m ng, ví d :char *p;char str[20];p = str;p[4] = h; Tuy nhiên, m ng và con tr không th dùng thay th cho nhau.5.Con tr và chu i Khi b t g p m t chu i ký t , trình biên d ch s lưu trong m t b ng chu i và phát sinh ra m t con tr ch n chu i này. ví d #include using namespace std; int main() { char *s; s = Dùng con tr là hi u qu .\n; cout 6.M ng con tr Các con tr cũng có th hình thành m ng. Ví dint *pa[10]; khai báo pa như là m t m ng ch a 10 con tr ki u integer. M i ph n t gi m t con tr ch n m t giá tr integer. gán m t a ch vào ph n t m ng có th dùng toán t &, ví d pa[2] = &var; Dùng m ng pa gán giá tr c a var cho bi n x pa[2] = &var x = *pa[2]7.Null pointer N u con tr ch a giá tr 0 (null), ư c xem như không ch n b t kỳ âu. T t c các con tr không ư c dùng ư c gán giá tr null và tránh dùng con tr null thì tránh ư c các s c trong chương trình B t c ki u con tr nào u có th kh i ng b ng giá tr nullví d : float *p = 0;8.Tr gián ti p M t con tr ch n m t con tr khác là hình th c tr gián ti p. pointer Bi n a ch Giá tr Tr tr c ti p pointer pointer Bi n a ch a ch Giá tr Tr gián ti p Khai báo tr gián ti p, ví dint **balance; balance không ph i là con tr ch n s integer mà là ch n m t con tr ki u integer. #include using namespace std; int main() { int x, *p, **q; x = 10; p = &x; q = &p; cout

Tài liệu được xem nhiều: