Trong bài xích này họ sẽ học các sử dụng bé trỏ trong xây dựng C. Đây là một trong kiến thức khá cạnh tranh trong lập trình, yêu cầu các bạn phải gọi về bộ nhớ và địa chỉ trong c.

Bạn đang xem: Con trỏ trong c là gì

Bài 13 Trong học lập trình C từ bỏ A cho tới Z


Địa chỉ của biến

Mỗi biến chuyển khi khai báo sẽ được dành ra một hoặc các ô ghi nhớ trong bộ nhớ, để truy vấn được ô ghi nhớ này họ cần địa chỉ cửa hàng của nó.

Điều này tương tự như bạn đăng kí hộ khẩu vậy khi đó Số XX Đường YY Quận ZZ thiết yếu là địa chỉ của nhà bạn.

Khi 1 fan đến nhà của bạn người ta bao gồm 2 cách để tìm

Địa chỉ cần bất biến, tuy nhiên nó có thể cho Anh B, Anh C, Anh D thuê lại add đó. Cùng để truy nã cập showroom của biến bọn họ sử dụng con trỏ.

Để xem địa chỉ của biến chúng ta sử dụng toán tử &, ví dụ: address = &nha_anh_a;

VD: In ra add của biến

#include int main () int nha_anh_a; char nha_anh_b<25>; printf("Dia chi cua nha anh A la: %x ", &nha_anh_a ); printf("Dia đưa ra cua nha anh B la: %x ", &nha_anh_b ); return 0;Kết quả

*

Con trỏ là gì?

Một con trỏ – pointer là một biến chuyển mà trong những số ấy giá trị của nó là địa chỉ cửa hàng của phát triển thành khác.

Thực chất nhỏ trỏ cũng là 1 biến. Nó cũng khá được cấp vạc 1 ô nhớ nhằm lưu giá trị, tuy vậy điểm khác hoàn toàn là: giá trị của biến nhỏ trỏ là địa chỉ cửa hàng của trở thành khác

Các bạn chỉ việc nhớ rõ điều này, sẽ không biến thành rối não khi học con trỏ.

Xem thêm: Vải Thun Poly Là Gì ? Những Ưu Điểm Và Hạn Chế Của Vải Thun Poly

*

Cách khai báo nhỏ trỏ

Giống như các biến cùng hằng số, chúng ta phải khai báo bé trỏ trước khi bạn có thể sử dụng nó để lưu trữ bất kì địa chỉ của vươn lên là nào. Dạng tổng quát của câu hỏi khai báo nhỏ trỏ như sau:

kiểu dữ liệu> * thương hiệu biến>;

VD: int *addr = &nha_anh_a; //khai báo trỏ tới showroom của biến nhà anh A

Dấu * trước tên biến hóa là ký kết hiệu báo cho trình biên dịch biết ta đã khai báo con trỏ.

VD:


#include int main () int nha_anh_a; char nha_anh_b; int *address_A = &nha_anh_a; char *address_B = &nha_anh_b; printf("Dia bỏ ra cua nha anh A la: %x ", &nha_anh_a ); printf("Dia bỏ ra cua nha anh B la: %x ", &nha_anh_b ); printf("Gia tri cua nhỏ tro address_A la: %x ", address_A); printf("Gia tri cua bé tro address_B la: %x ", address_B); printf("Dia bỏ ra cua bé tro address_A la: %x ", &address_A); printf("Dia đưa ra cua con tro address_B la: %x ", &address_B); return 0;Kết quả

*


Ta thấy rằng:
Địa chỉ đơn vị anh A = Gia trị con trỏ address_A. Tương xứng với lệnh khởi tạo int *address_A = &nha_anh_a;Địa chỉ của bé trỏ address_A lại là một showroom khác phía bên trong ô nhớ. Thế cho nên ta có thể sử dụng 1 bé trỏ khác để trỏ về showroom của con trỏ address_A.

Cách áp dụng con trỏ

Thay đổi quý giá biến bằng con trỏ

Như bọn họ đã học, để chuyển đổi giá trị của biến chúng ta sử dụng lệnh gán. VD: int var = 10;

Để chuyển đổi giá trị này có 2 cách:

Dùng lệnh gán: var = 20;Hoặc dùng nhỏ trỏ: *ptr = 20;

Dấu * t vào trường đúng theo này ý nghĩa sâu sắc đó là: Gán quý hiếm vào add mà bé trỏ ptr vẫn trỏ tới.

Lưu ý: các bạn phải biệt lập được lốt * vào trường hợp tạo ra con trỏ với dấu * trong trường hòa hợp trỏ tới quý giá ô lưu giữ (địa chỉ) mà nhỏ trỏ đang lưu lại nhé

*

Trong bài bác này, bọn họ sẽ rứa đối cực hiếm Nhà anh A bởi con trỏ address_A nhé

#include int main () int nha_anh_a = 10; int *address_A = &nha_anh_a; printf("Dia đưa ra cua nha anh A la: %x ", &nha_anh_a ); printf("Gia tri cua nha anh A la: %d ", nha_anh_a ); printf("Gia tri cua nhỏ tro address_A la: %x ", address_A); *address_A = 20; printf(" "); printf("Dia chi cua nha anh A la: %x ", &nha_anh_a ); printf("Gia tri cua nha anh A la: %d ", nha_anh_a ); printf("Gia tri cua nhỏ tro address_A la: %x ", address_A); return 0;Kết quả

*

Ta thấy rằng, khi dùng lệnh *address_A = 20; thì cực hiếm của biến đổi nha_anh_a cố gắng đổi, còn cực hiếm của con trỏ address_A không cố kỉnh đổi

Con trỏ của bé trỏ hay bé trỏ cung cấp 2

Khái niệm này nghe dường như lằng nhằng tuy thế thực ra cũng tương đối đợn giản.Như phần trước sẽ nói, bé trỏ thực chất cũng là một trong những biến, nó cũng có showroom và giá chỉ trị. Thế cho nên nó cũng sẽ có thể được call từ bé trỏ khác. Như sau:

VD:

int main () int nha_anh_a = 10; int *address_A = &nha_anh_a; int **quan_ly = &address_A; printf("Dia chi cua nha anh A la: %x ", &nha_anh_a ); printf("Gia tri cua nha anh A la: %d ", nha_anh_a ); printf("Gia tri cua bé tro address_A la: %x ", address_A); **quan_ly = 20; printf(" "); printf("Dia đưa ra cua nha anh A la: %x ", &nha_anh_a ); printf("Gia tri cua nha anh A la: %d ", nha_anh_a ); printf("Gia tri cua bé tro address_A la: %x ", address_A); return 0;Kết quả

*

Giải thích: Ta khai báo 1 nhỏ trỏ bậc 2 cùng với dấu ** , lưu lại giá trị của biến con trỏ address_A.

Sau kia tiến hành chuyển đổi giá trị của biến chuyển mà con trỏ address_A trỏ tới một giải pháp gián tiếp bởi con trỏ cấp 2 quan_ly

*

Con trỏ NULL vào C

Có một bí quyết thực hành tốt khi họ gán giá trị NULL mang đến biến nhỏ trở vào trường hợp các bạn không có địa chỉ cửa hàng chính xác để được gán. Điều này thường xẩy ra trong quy trình khai báo. Một con trỏ được gán quý giá NULL được hotline là bé trỏ null.

Con trỏ null là 1 trong hằng số với giá trị 0 được có mang trong một vài tủ sách chuẩn. Xem lịch trình dưới đây:

#include int main () int *contro = NULL; printf("Gia tri cua contro la: %x ", contro ); return 0;Biên dịch cùng chạy lịch trình C trên sẽ cho kết quả:

Gia tri cua contro la: 0

Kết

Con trỏ vào lập trình là 1 trong khái niệm nghe thì dường như phức tạp, mà lại hãy nghĩ về nó một cách đơn giản nhất. Bạn sẽ thấy nó cũng không rối não giống như các gì bạn tưởng tượng.Và tất yếu phải thao tác nhiều với nhỏ trỏ họ mới nắm rõ tường tận duy nhất về chúng

Nếu thấy hữu dụng hãy phân chia sẻ bài viết và tham gia nhóm Nghiện Lập Trình để chia sẻ và học hỏi và giao lưu nhé