Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 37 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
37
Dung lượng
646,49 KB
Nội dung
CHƯƠNG 5CHƯƠNG 5 CON TRỎCON TRỎ (Pointers)(Pointers) (Pointers)(Pointers) 1. Giớithiệu1. Giớithiệu 1. Giới thiệu1. Giới thiệu y Mộtcontrỏ là 1biếnchứamột địachỉ bộ nhớ. Địachỉ này là vị trí củamột đốitượn g khác trong bộ nhớ. y Nếumộtbiếnchứa địachỉ củamộtbiếnkhác, biếnthứ nhất đượcgọilàtrỏđếnbiếnthứ hai. 1. Giớithiệu1. Giớithiệu 1. Giới thiệu1. Giới thiệu Đ ị ach ỉ Biếntrong ị bộ nhớ bộ nhớ Mộtbiến đượccấp phát ô nhớ tại địachỉ 1000 có giá trị là địa chỉ ( 1003 ) giá trị là địa chỉ ( 1003 ) của1biến khác. Biếnthứ nhất đượcgọilàcontrỏ. Bộ nhớ 2. Khai báo bi2. Khai báo bi ếế n con trn con tr ỏỏ 2. Khai báo bi2. Khai báo bi ếế n con trn con tr ỏỏ y Cú pháp: type *pointerVariable; type :xácđịnh kiểudữ liệucủabiếnmà type : xác định kiểu dữ liệu của biến mà con trỏ trỏ đến. Ví dụ: Ví dụ: int *a; a 3. Toán t 3. Toán t ửử con t r con t r ỏỏ (( p ointer o p erator sp ointer o p erator s )) (( pppp )) y Toán tử & là toán tử 1 ngôi, trả về địa chỉ bộ nhớ của toán hạn g của nó. ◦ Toán tử & dùng để gán địa chỉ của biến cho biến con trỏ Cú p há p : pp <Tên biến con trỏ>=&<Tên biến> 3. Toán t3. Toán t ửử con trcon tr ỏỏ (( pointer operatorspointer operators )) 3. Toán t3. Toán t ửử con trcon tr ỏỏ (( pointer operatorspointer operators )) y Ví dụ: a 25 x 25 a 25 x y 25 int a=25, x; int *y; y x=a; y=&a; y 3. Toán t3. Toán t ửử con trcon tr ỏỏ (( pointer operatorspointer operators )) 3. Toán t3. Toán t ửử con trcon tr ỏỏ (( pointer operatorspointer operators )) y Toán tử * : là toán tử một ngôi trả về giá trị tại địa chỉ con trỏ trỏ đến. Cú pháp : *<Tên biến con trỏ> V í d ụ : a=* p ; ụ p; 4. Các thao tác trên con trỏ4. Các thao tác trên con trỏ 4. Các thao tác trên con trỏ4. Các thao tác trên con trỏ y Lệnh gán con trỏ Có thể dùng phép gán để gán giá trị củamột con trỏ cho mộtcontrỏ khác có cùng kiểu V í d ụ : int x; int *p1, *p2; p1 = &x; p2 = p1; Sau khi đ ọ an l ệ nh trên đư ợ c th ự c hi ệ n , cả ọ ệ ợ ự ệ , hai p1 và p2 cùng trỏ đến biến x. 4. Các thao tác trên con trỏ4. Các thao tác trên con trỏ 4. Các thao tác trên con trỏ4. Các thao tác trên con trỏ y Phép toán số học trên con trỏ ◦ Chỉ có 2 phép toán sử dụng trên con trỏ là phép cộng và trừ ◦ Khi cộng (+) hoặctrừ (-) 1 con trỏ với1số n g u y ên N ; kết q uả trả về là 1 con trỏ.Con gy ; q trỏ này chỉđến vùng nhớ cách vùng nhớ của con trỏ hiệntạimộtsố nguyên lầnkích thướ ủ kiể dữ liệ ủ ó thướ cc ủ a kiể u dữ liệ uc ủ an ó . 4. Các thao tác trên con trỏ4. Các thao tác trên con trỏ 4. Các thao tác trên con trỏ4. Các thao tác trên con trỏ Ví dụ : char *a; short *b; lon g *c; Các con trỏ a, b, c lần lượt trỏ tới ô nhớ 1000 2000 à 3000 1000 , 2000 v à 3000 . Cộng các con trỏ với một số nguyên: 1// ỏ dời đi1b a = a + 1 ; // con tr ỏ a dời đi 1 b yte b = b + 1;//con trỏ b dời đi 2 byte c = c + 1; //con trỏ cdời đi4byte c = c + 1; //con trỏ c dời đi 4 byte [...]... *pb; *pb = temp; màn hì h à hình cout . t3. Toán t ửử con trcon tr ỏỏ (( pointer operatorspointer operators )) y Ví dụ: a 25 x 25 a 25 x y 25 int a= 25, x; int *y; y x=a; y=&a; y 3. Toán t3. Toán t ửử con trcon tr ỏỏ (( pointer. endl; cout << “b = ” << b; m à n hì n h a = 15 b = 20 } b 20 5. Cấpphátbộ nhớ động5. Cấpphátbộ nhớ động 5. Cấp phát bộ nhớ động5. Cấp phát bộ nhớ động y Con trỏ cung. hợpvớibiếncontrỏ p. 5. Cấpphátbộ nhớ động5. Cấpphátbộ nhớ động 5. Cấp phát bộ nhớ động5. Cấp phát bộ nhớ động y Ví dụ: int *p; p = ( int * ) malloc ( 50 *sizeof ( int )) ; p ( ) ( ()) Toán