Con trỏ (Pointer) trong C là một biến, nó còn được gọi là locator hoặc indicator chỉ ra một địa chỉ của một giá trị.
Cách Khai báo con trỏ trong C
int
*a;
//con tro tro toi int
char
*c;
//con tro tro toi char
Con trỏ bằng ngôn ngữ C được khai báo bằng cách sử dụng dấu '*'.
Các Kí hiệu được sử dụng trong con trỏ
Kí hiệu | Tên | Mô tả kí hiệu |
---|---|---|
& | Địa chỉ của toán tử | Xác định địa chỉ của một biến. |
* | Toán tử liên kết. | Truy cập đến giá trị của địa chỉ. |
Ví dụ :
#include<stdio.h>
int
main() {
int
number = 6
0
;
printf(
"Gia tri cua number la %d\n"
, number); // in ra giá trị
printf(
"Dia chi cua number la %x"
, &number); // in ra địa chỉ
return
0
;
}
Kết quả:
Gia tri cua number la 60 Dia chi cua number la 23fe4c
Ví dụ 2: sử dụng con trỏ để hoán đổi 2 số mà không dùng biến tạm.
#include<stdio.h>
int
main() {
int
a =
10
, b =
20
;
int
*p1 = &a,*p2 = &b;
printf(
" gia tri Truoc khi hoan doi: *p1=%d *p2=%d\n"
, *p1, *p2);
// hoan doi
*p1 = *p1 + *p2; // tổng
*p2 = *p1 - *p2; // tổng - *p2 =p1.
*p1 = *p1 - *p2; // tổng -*p1 =p2
printf(
"
gia tri Sau khi hoan doi: *p1=%d *p2=%d"
, *p1, *p2);
return
0
;
}
Kết quả :
gia tri Truoc khi hoan doi: *p1=10 *p2=20
gia tri Sau khi hoan doi: *p1=20 *p2=10
Con trỏ NULL (NULL Pointer)
Trong C : Một con trỏ không được gán bất kỳ giá trị nào được gọi là con trỏ NULL. Nếu không có địa chỉ nào được chỉ định trong con trỏ tại thời điểm khai báo, bạn có thể chỉ định giá trị NULL.
Khai báo :
int
*p = NULL;
Trong hầu hết các thư viện, giá trị của con trỏ NULLlà 0.