Mô tả

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ác biểu tượng được sử dụng trong con trỏ

Biểu tượng Tên Mô tả
& Đị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ỉ.

Toán tử địa chỉ

Toán tử địa chỉ ‘&’ trả về địa chỉ của một biến, bạn cần phải sử dụng ‘%x’ để hiện thị địa chỉ của một biến.

#include <stdio.h>

int main()
{
    int number=100;
    
    printf("Gia tri cua number là %d\n", number);
    printf("Dia chi cua number la %x", &number);
    return 0;
}

Khai báo con trỏ trong C

Con trỏ bằng ngôn ngữ C được khai báo bằng cách sử dụng dấu ‘*’.

int *a; //con tro tro toi int
char *c; //con tro tro toi char

Ví dụ con trỏ trong C

Ví dụ 1: sử dụng con trỏ để in ra màn hình địa chỉ và giá trị mà con trỏ trỏ đến.

Như bạn thấy trong hình trên, biến con trỏ lưu trữ địa chỉ của biến số ví dụ fff4. Giá trị của biến số là 50. Nhưng địa chỉ của biến con trỏ p là aaa3.

Bằng cách sử dụng toán tử * ( toán tử liên kết ), chúng ta có thể in giá trị của biến con trỏ p.

#include <stdio.h>

int main()
{
    int number=50;
    int *p;
    
    p = &number;
    
    printf("Gia tri cua con tro p la %d\n",*p);
    printf("Dia chi cua con tro p la %x",p);
    return 0;
}

Ví dụ 2: sử dụng con trỏ để hoán đổi 2 số mà không sử dụng biến số thứ 3.

#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;
    *p2 =*p1 - *p2;
    *p1= *p1 - *p2;
    printf("Gia tri sau khi hoan doi *p1 = %d, *p2 = %d",*p1, *p2);
    
    return 0;
}

Con trỏ NULL (NULL Pointer)

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. Đó là một cách tiếp cận tốt hơn.

int *p = NULL;

Trong hầu hết các thư viện, giá trị của con trỏ là 0 (zero).

Sử dụng con trỏ trong C

Có rất nhiều cách sử dụng con trỏ trong lập trình C.

Phân bổ bộ nhớ động

Trong ngôn ngữ C, chúng ta có thể tự động phân bổ bộ nhớ bằng các hàm malloc() và calloc() nơi con trỏ được sử dụng.

Mảng, hàm và cấu trúc (structure)

Con trỏ trong ngôn ngữ c được sử dụng rộng rãi trong các mảng, các hàm và cấu trúc. Nó giúp chúng ta viết ít code hơn và cải thiện hiệu suất. Ví dụ, sử dụng con trỏ trong việc truyền tham chiếu trong C.

Đăng nhập
Đăng ký
Hotline: 0904251826
x