Test

Chia sẻ bởi Nguyễn Văn Giang | Ngày 09/05/2019 | 89

Chia sẻ tài liệu: Test thuộc Hình học 12

Nội dung tài liệu:

1
CHƯƠNG 6: KIỂU CON TRỎ



6.1 Con trỏ và địa chỉ
6.2 Khai báo con trỏ, các phép toán trên con trỏ
6.3 Con trỏ và mảng một chiều
6.4 Con trỏ và mảng nhiều chiều
6.5 Mảng con trỏ
6.6 Cấp phát bộ nhớ động
2
Khái niệm con trỏ



Một con trỏ là một biến chứa địa chỉ ô nhớ. Địa chỉ này là vị trí của một đối tượng khác trong bộ nhớ.
Ví du:
float x; //x là một biến có kiểu float
x=12.5; //x có giá trị là 12.5
Và lúc này, biến x chiếm 4 ô nhớ liên tiếp, giả sử mỗi ô nhớ có kích thước 1 byte.


3
Con trỏ và địa chỉ
Phép lấy địa chỉ của 1 biến
Kí hiệu: &
Cách sử dụng:&
Ví dụ: int *pi=&a; // pi giữ địa chỉ của các biến nguyên a
Phép toán lấy giá trị tại một địa chỉ mà một con trỏ đang trỏ tới
Kí hiệu: *
Cách sử dụng: *
Ví dụ:
int a= 10; // biến a có giá trị 10
int *pi;
pi =&a; //pi giữ địa chỉ của biến a
*pi là giá trị của a và bằng 10



4
Con trỏ và địa chỉ



25
int a=25, x;
int *y;
x=a;
y=&a;
Ví dụ 1:
5
Con trỏ và địa chỉ
int a, *p;
a=25;
p=&a;
m=*p ;
 
Cho biết Giá trị của m ?
Ví dụ 2:
6
Con trỏ và địa chỉ
Lưu ý:
Khi gán địa chỉ của 1 biến cho 1 biến con trỏ, mọi sự thay đổi trên nội dung ô nhớ con trỏ chỉ tới sẽ làm giá trị của biến thay đổi theo.
Khi ta khai báo:
int a=10;int *pi;
pi=&a; // pi giữ địa chỉ biến a
*pi=*pi +2;
sẽ làm cho biến a có giá trị là 12
Lưu ý: Việc sử dụng và thao tác trên giá trị tại địa chỉ của con trỏ chỉ được thực hiện sau khi con trỏ đã có địa chỉ
7
Con trỏ và địa chỉ
int main()
{
int a,b,*pa,*pb;
a=2;b=3;
printf("Gia tri cua bien a %d, gia tri cua bien b %d",a,b);
pa=&a;
pb=&b;
printf(" Noi dung cua o nho con tro pa tro toi %p",*pa);
printf(" Noi dung cua o nho con tro pb tro toi %p",*pb);
*pa=20;
*pb=30;
printf(" Gia tri cua bien a sau khi thay doi la %d",a);
printf(" Gia tri cua bien b sau khi thay doi la %d",b);
getch();
}
8
C
9
Khai báo con trỏ
Khai báo
Giống như mọi biến khác, biến con trỏ muốn sử dụng cũng cần phải được khai báo
Ví dụ




ch1 và ch2 là biến con trỏ, trỏ tới vùng nhớ kiểu char (1 byte).
p1 là biến con trỏ, trỏ tới vùng nhớ kiểu int (4 bytes) còn p2 là biến kiểu int bình thường.
*;
char *ch1, *ch2;
int *p1, p2;
10
Khai báo con trỏ
Sử dụng từ khóa typedef



Ví dụ



typedef *;

;
typedef int *pint;
int *p1;
pint p2, p3;
11
Con trỏ NULL
Khái niệm
Con trỏ NULL là con trỏ không chứa địa chỉ nào.
Khác với con trỏ chưa được khởi tạo.
NULL
int n;
int *p1 = &n;
int *p2;
int *p3 = NULL;
12
Con trỏ và mảng 1 chiều
Giữa mảng và con trỏ có một sự liên hệ rất chặt chẽ:
Những phần tử của mảng được xác định bằng chỉ số trong mảng và cũng có thể được xác định qua biến con trỏ.
Tên của một mảng tương đương với địa chỉ phần tử đầu tiên của nó, tương tự một con trỏ tương đương với địa chỉ của phần tử đầu tiên mà nó trỏ tới.
13
Con trỏ và mảng 1 chiều
char ch[10], *p;
p = ch;
p được gán địa chỉ của phần tử đầu tiên của mảng ch.
p = ch;
Để lấy giá trị phần tử thứ 3 trong mảng ch, ta dùng một trong 2 cách sau: ch[2] hoặc *(p+2).
Ví dụ 1:
14
Con trỏ và mảng 1 chiều
Numbers
int Numbers[5];
p= Numbers;
int *p;
p
*p = 10;
10
p++;
*p = 20;
20
p = &numbers[2];
*p = 30;
20
30
50
p = numbers;
*(p+4) = 50;
15
Con trỏ và mảng 1 chiều
16
Con trỏ và mảng 2 chiều
Để lần lượt duyệt trên các phần tử của mảng 2 chiều ta có thể dùng con trỏ như sau:
float *pa, a[2][3];
pa=(float*)a;
17
Con trỏ và mảng 2 chiều
18
Các phép toán trên con trỏ
Có 4 phép toán liên quan tới con trỏ và địa chỉ:
Phép gán
Phép tăng giảm địa chỉ
Phép truy cập bộ nhớ
Phép so sánh
19
Các phép toán trên con trỏ
20
Các phép toán trên con trỏ
21
Các phép toán trên con trỏ
22
Mảng con trỏ
Mỗi biến con trỏ là một biến đơn. Ta có thể tạo mảng của các con trỏ với mỗi phần tử của mảng là một con trỏ.
Cú pháp:
*Tên mảng con trỏ [số phần tủ];
23
Mảng con trỏ





p
int *p[5];
int a=6;
p[0] = &a;
100
p[2] = p[0];
100
6
int b;
b
b = *p[0];
6
24
Cấp phát bộ nhớ động
Cấp phát vùng nhớ cho biến con trỏ:
Các hàm: malloc(), calloc(), free()…
25
Cấp phát bộ nhớ động
Giải phóng vùng nhớ cho biến con trỏ
26
Con trỏ và tham số hình thức của hàm
27
Con trỏ và tham số hình thức của hàm
Ví dụ viết hàm hoán vị:
28
Con trỏ và tham số hình thức của hàm
29
C
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Nguyễn Văn Giang
Dung lượng: | Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)