Con trỏ trong C

Posted by

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ị.

Con trỏ trong C


Nội dung chính

  • Các biểu tượng được sử dụng trong con trỏ
  • Toán tử địa chỉ
  • Khai báo con trỏ trong C
  • Ví dụ con trỏ trong C
  • Con trỏ NULL (NULL Pointer)
  • Sử dụng con trỏ trong C
    • Phân bổ bộ nhớ động
    • Mảng, hàm và cấu trúc (structure)

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.

?
1
2
3
4
5
6
7
8
#include<stdio.h> 
int main() {
    int number = 50;
    printf("Gia tri cua number la %d\n", number);
    printf("Dia chi cua number la %x", &number);
    return 0;
}

Kết quả:

Gia tri cua number la 50
Dia chi cua number la 23fe4c

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 ‘*’.

?
1
2
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.

Ví dụ con trỏ trong C

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.

?
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main() {
    int number = 50;
    int *p;
    p = &number; // luu tru dia chi cua bien number
    printf("Dia cua con tro p la %d\n", *p);
    printf("Dia chi cua con tro p la %x", p);
    return 0;
}

Kết quả:

Dia cua con tro p la 50
Dia chi cua con tro p la 23fe44

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h> 
int main() {
    int a = 10, b = 20;
    int *p1 = &a,*p2 = &b; 
    printf("Truoc khi hoan doi: *p1=%d *p2=%d\n", *p1, *p2);
    // hoan doi
    *p1 = *p1 + *p2;
    *p2 = *p1 - *p2;
    *p1 = *p1 - *p2;
    printf("Sau khi hoan doi: *p1=%d *p2=%d", *p1, *p2);
    return 0;
}

Kết quả:

Dia cua con tro p la 50
Dia chi cua con tro p la 23fe44

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.

?
1
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 call by value và call by reference.

Nguon: viettuts.vn

Leave a Reply

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *