Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
103,08 KB
Nội dung
Bài 8
CON TRỎ
(POINTER)
Nội Dung
1. Khái niệm con trỏ
2.Các toán tử con trỏ
3. Phép tính số học trên con trỏ
4.Con trỏ và mảng
5.Con trỏ và chuỗi
6.Mảng con trỏ
7.Null pointer
8.Trỏ gián tiếp
1. Khái niệm con trỏ
Contrỏ 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 contrỏ phải được khai báo như sau:
kiểu *tên biến
Ví dụ: để khai báo một biến p là contrỏtrỏ đến
số nguyên
int *p
2.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 <iostream>
using namespace std;
int main()
{
int x;
int *ptr;
int giatri;
x = 3200;
ptr = &x;
giatri = *ptr;
cout << "Gia tri x la: " << giatri<< '\n';
return 0;
}
ptr
100
x
3200
giatri
0 1 2 100 101
ptr
100
x
3200
giatri
3200
0 1 2 100 101
ptr = &x ;
Địa chỉ bộ nhớ
Bộ nhớ
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 contrỏ là ++, , +, -
Ví dụ contrỏ 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ứ 8
Viế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 <iostream.h>
using namespace std;
int main()
{
int *p, i, a[10];
p = a;
for (i = 0; i<10; i++)
cout<< "Dia chi cua a["<<i<<"] la:"<< p+i<< '\n';
return 0;
}
4.Con trỏ và mảng
Trong C++, mảng và contrỏ có quan hệ gần
ví 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)
[...]... 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 . Bài 8 CON TRỎ (POINTER) Nội Dung 1. Khái niệm con trỏ 2.Các toán tử con trỏ 3. Phép tính số học trên con trỏ 4 .Con trỏ và mảng 5 .Con trỏ và chuỗi 6.Mảng con trỏ 7.Null pointer 8. Trỏ gián. kiểu con trỏ nào đều có thể khởi động bằng giá trị null ví 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. Địa chỉ Giá trị pointer Biến Trỏ. 0; } 4 .Con trỏ và mảng Trong C++, mảng và con trỏ có quan hệ gần ví 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