Con trỏ (pointer) trong C

Con trỏ (pointer) trong ngôn ngữ lập trình C++ cũng là một biến, nó còn được gọi là bộ định vị hoặc chỉ báo đến địa chỉ của một giá trị. Trong bài học C++ dưới đây Taimienphi.vn sẽ giới thiệu cho bạn chi tiết về con trỏ (pointer) trong C++.

Khác với con trỏ trong các ngôn ngữ lập trình khác như Java hay Python, trong C++, con trỏ được sử dụng để truy cập bộ nhớ và thao tác địa chỉ.

con tro pointer trong c

Để tìm hiểu rõ hơn về con trỏ (pointer) trong C++, bạn đọc tham khảo tiếp bài viết dưới đây của Taimienphi.vn.

Mục Lục bài viết:

1. Con trỏ (pointer) trong C++

2. Sử dụng con trỏ trong C++

3. Địa chỉ (address) trong C++

4. Biến con trỏ trong C++

5. Khai báo con trỏ trong C++

6. Toán tử được sử dụng trong con trỏ

7. Ví dụ về con trỏ trong C++

8. Một số lỗi thường gặp khi làm việc với con trỏ trong C++

 

 

1. Con trỏ (pointer) trong C++

- Con trỏ được sử dụng để truy xuất chuỗi, cây, ... và được sử dụng với mảng, cấu trúc và hàm.

- Chúng ta có thể trả về nhiều giá trị từ hàm bằng cách sử dụng con trỏ.

- Cho phép truy cập vị trí bộ nhớ bất kỳ trong bộ nhớ máy tính.

 

2. Sử dụng con trỏ trong C++

Trong C++, chúng ta có nhiều cách để sử dụng con trỏ:

- Cấp phát bộ nhớ động: Trong C++, chúng ta có thể phân bổ bộ nhớ động bằng cách sử dụng các hàm malloc () và calloc () mà trong đó con trỏ được sử dụng.

- Mảng, hàm và cấu trúc: Con trỏ trong ngôn ngữ C++ được sử dụng rộng rãi trong mảng, hàm và cấu trúc, giúp giảm bớt các mã và cải thiện hiệu suất.

 

3. Địa chỉ (address) trong C++

Để tìm hiểu về con trỏ, trước hết chúng ta cùng tìm hiểu cách lưu trữ dữ liệu trên máy tính như thế nào.

Mỗi biến mà bạn tạo trong chương trình sẽ được gán một vị trí trong bộ nhớ máy tính. Giá trị lưu trữ biến thực sự được lưu trữ ở vị trí được chỉ định.

Để biết vị trí dữ liệu được lưu trữ, C++ cung cấp toán tử & (tham chiếu), cung cấp cho bạn địa chỉ một biến. Nếu var là biến thì &var cung cấp địa chỉ của biến đó.

- Ví dụ: Cho ví dụ về địa chỉ trong C++:

#include

sử dụng namespace std;

int main()

{

int var1 = 3;

int var2 = 24;

int var3 = 17;

cout < &var1=""><>

cout < &var2=""><>

cout < &var3=""><>

}

Đầu ra có dạng:

0x7fff5fbff8ac

0x7fff5fbff8a8

0x7fff5fbff8a4

Lưu ý:

- Đầu ra trên hệ thống của bạn có thể không giống như đầu ra ở trên.

- 0x ở đầu biểu thị địa chỉ ở dạng cơ số 16 (hexadecimal).

- Ngoài ra địa chỉ thứ nhất khác với địa chỉ thứ hai 4 byte và địa chỉ thứ hai khác với thứ ba 4 byte. Điều này là do kích thước của số nguyên (biến kiểu int) là 4 byte trong hệ thống 64 bit.

 

4. Biến con trỏ trong C++

C++ cho phép người dùng thao tác trực tiếp dữ liệu trong bộ nhớ máy tính. Bạn có thể gán và hủy gán khoảng trống bất kỳ trong bộ nhớ theo ý muốn. Để làm được điều này, chúng ta sử dụng biến con trỏ.

Biến con trỏ là các biến trỏ đến một địa chỉ cụ thể trong bộ nhớ được trỏ bởi một biến khác.

 

5. Khai báo con trỏ trong C++

Trong C++, con trỏ được khai báo bằng cách sử dụng * (ký hiệu dấu hoa thị).

int ∗ a; // con trỏ tới int

char ∗ c; // con trỏ tới char

 

6. Toán tử được sử dụng trong con trỏ

Dưới đây là bảng danh sách các toán tử được sử dụng trong con trỏ trong C++:

con tro pointer trong c

Biểu tượng Tên Mô tả

& Toán tử Address Cung cấp địa chỉ của một biến.

∗ Toán tử Indirection Lấy giá trị của một địa chỉ.

Trong đó, toán tử tham chiếu (&) được sử dụng để cung cấp địa chỉ của một biến. Để lấy giá trị được lưu trữ trong địa chỉ bộ nhớ, chúng ta sử dụng toán tử (*).

Ví dụ, nếu biến kiểu số được lưu trữ trong địa chỉ bộ nhớ 0x123 và nó chứa giá trị là 5. Toán tử tham chiếu (&) cung cấp giá trị 0x123, còn toán tử trỏ đến (*) cho giá trị 5.

Lưu ý: Dấu (*) đượcsử dụng trong khai báo con trỏ C++ không phải là con trỏ đến. Nó chỉ là một ký hiệu tương tự để tạo ra một con trỏ.

 

7. Ví dụ về con trỏ trong C++

Ví dụ 1:

Dưới đây là ví dụ đơn giản về sử dụng con trỏ in địa chỉ và giá trị:

#include

Sử dụng namespace std;

int main()

{

int number=30;

int ∗ p;

p=&number;//lưu trữ địa chỉ của biến number

cout<" địa="" chỉ="" của="" biến="" number="">{C}{C}{C}{C}{C}<><>

cout<"địa chỉ="" của="" biến="" p=""><><>

cout<" địa="" chỉ="" của="" biến="" p="">{C}{C}{C}{C}{C}<><>

trả về 0;

}

Đầu ra có dạng:

Địa chỉ của biến number là:0x7ffccc8724c4

Địa chỉ của biến p là:0x7ffccc8724c4

Giá trị của biến p là:30

Ví dụ 2:

Trong ví dụ dưới đây, con trỏ hoán đổi 2 number mà không sử dụng biến thứ 3:

#include

sử dụng namespace std;

int main()

{

int a=20,b=10,∗p1=&a,∗p2=&b;

cout<"trước khi="" hoán="" đổi:="" ∗p1="<<∗p1<<" ∗p2="<<∗p2<<>< p=" "=""><>

∗p1=∗p1+∗p2;

∗p2=∗p1-∗p2;

∗p1=∗p1-∗p2;

cout<" sau="" khi="" hoán="" đổi:="" ∗p1="<<∗p1<<" ∗p2="<<∗p2<<>< p=" "=""><>

trả về 0;

}

Đầu ra có dạng:

Trước khi hoán đổi: ∗p1=20 ∗p2=10

Sau khi hoán đổi: ∗p1=10 ∗p2=20

 

8. Một số lỗi thường gặp khi làm việc với con trỏ trong C++

Giả sử, nếun muốn con trỏ pc trỏ đến địa chỉ của c. Sau đó:

int c, *pc;

pc=c; /* Sai! pc là địa chỉ còn c không phải địa chỉ. */

*pc=&c; /* Sai! * pc là giá trị được chỉ theo địa chỉ, còn %amp;c là một địa chỉ. */

pc=&c; /* Đúng! pc là địa chỉ, %amp;pc cũng là địa chỉ. */

*pc=c; /* Đúng! *pc là giá trị được chỉ theo địa chỉ, c là giá trị. */

Trong cả hai trường hợp, con trỏ pc không trỏ đến địa chỉ của c.

https://thuthuat.taimienphi.vn/con-tro-pointer-trong-c-45804n.aspx
Bài viết trên đây Taimienphi.vn vừa giới thiệu cho bạn về con trỏ (pointer) trong C++. Trong các bài viết tiếp theo, Taimienphi.vn sẽ giới thiệu tiếp cho bạn về tham chiếu trong C++ là gì, vấn đề tham chiếu trong C cũng được nhiều bạn lập trình quan tâm, bài viết sẽ có các ví dụ và phân tích cụ thể.

Tác giả: Ngọc Trinh     (4.0★- 3 đánh giá)  ĐG của bạn?

  

Bài viết liên quan

Cấu trúc dữ liệu trong C
Phạm vi biến trong C
Lệnh điều kiện trong C
Mảng (array) trong C (phần 4)
Modifier trong C
Từ khoá liên quan:

Con trỏ (pointer) trong C++

, học C++, con trỏ trong C++,

SOFT LIÊN QUAN
  • Bloodshed Dev C++

    Trình biên dịch C, C++ đa tính năng

    Bloodshed Dev-C++ là IDE (môi trường phát triển hợp nhất) chuyên dụng cho ngôn ngữ lập trình C hoặc C++ hỗ trợ đầy đủ các chức năng từ việc soạn thảo văn bản đến viết các chương trình cho DOS và hệ điều hành giúp người d ...

Tin Mới

  • Cách tải và cài Anatomy Learning, ứng dụng học giải phẫu trên thiết bị Android

    Ứng dụng học giải phẫu trên thiết bị Android mang tên Anatomy Learning cung cấp cho người dùng tất cả những thông tin cần thiết liên quan đến giải phẩu bằng việc đưa ra những hình ảnh minh họa và các mô hình 3D cực kỳ chân thực, cùng tìm hiểu cách tải và cài Antomy Learning trong bài viết bên dưới đây.

  • Cách cài Học Toán 3, phần mềm học toán dành cho hoc sinh lớp 3

    Các bậc phụ huynh đang có con em đang theo học chương trình lớp 3 cần tìm một phần mềm có thể giảng dạy môn toán, đồng thời giúp các em có hứng thú, yêu thích với môn học này thì hãy tải và cài Học toán 3, phần mềm học toán dành cho hoc sinh lớp 3 đang được rất nhiều các thầy cô giáo và các bậc phu huynh sử dụng hiện nay.

  • Cảm nhận về bài thơ Hai chữ nước nhà

    Bằng những kiến thức và hiểu biết của bản thân, em hãy viết bài văn nêu cảm nhận về bài thơ Hai chữ nước nhà của Trần Quang Khải để trình bày những cảm xúc, tình cảm và đánh giá của bản thân về cái hay, cái đẹp trong nội dung, nghệ thuật của tác phẩm.

  • Cách kết bạn trong Garena Free Fire

    Để có trải nghiệm game thú vị khi chơi cùng bạn bè, nhà phát hành game Free Fire đã cho ra tính năng kết bạn trong game. Với tính năng này người chơi có thể tìm kiếm bạn bè, kết bạn và mời người chơi tham gia vào tổ đội của mình để chiến đấu cùng nhau. Dưới đây là bài viết hướng dẫn cách kết bạn trong game Free Fire 2020.


 Mùa hè tới rồi muốn so sánh giá tìm điều hòa giá rẻ nhất thị trường hãy dùng TopGia để so sanh gia có nhiều mẫu dieu hoa để so sanh sanh, xem dieu hoagiá rẻ để so sánh giá