GiaoTrinhC++(27Jun21)

(Hoang2711) #1

Thiết kế trang Web


36 • Ông Văn Thông


Tuy nhiên, con trỏ (pointer) là một biến lưu trữ địa chỉ bộ nhớ dưới dạng giá trị của nó. Pointer
trỏ đến kiểu dữ liệu (như int hoặc string) cùng loại và được tạo bằng toán tử *. Địa chỉ của biến
bạn đang làm việc được gán cho con trỏ.


Ví dụ: #include , #include
using namespace std;
int main() {
string food = "Pizza"; // biến chuỗi food
string* ptr = &food; // con trỏ chứa địa chỉ của food
cout << food << "\n"; // in trị của biến food
cout << &food << "\n"; // in địa chỉ bộ nhớ của food
cout << ptr ; // in trị của pointer của food
return 0; }


Kết quả:

Pizza
0x7fff29f5ed30
0x7fff29f5ed30

Giải thích: Tạo một biến con trỏ với tên ptr, trỏ đến một biến chuỗi, bằng cách sử dụng dấu hoa
thị (string ptr). Lưu ý rằng loại con trỏ (string* ptr) phải khớp với loại biến bạn đang làm việc
cùng (string food).


Sử dụng toán tử & để lưu trữ địa chỉ bộ nhớ của biến được gọi là food và gán nó cho con trỏ (ptr).
Bây giờ, ptr giữ giá trị của địa chỉ bộ nhớ của food.


Mẹo: Có ba cách để khai báo biến con
trỏ, nhưng cách đầu tiên được ưa thích:


Ví dụ: string* mystring; // cách ưa thích
string *mystring;
string * mystring;

2. Nhận địa chỉ bộ nhớ và giá trị


Trong các ví dụ từ trước, ta đã sử dụng biến con trỏ để lấy địa chỉ bộ nhớ của một biến (được sử
dụng cùng với toán tử tham chiếu &). Tuy nhiên, bạn cũng có thể sử dụng con trỏ để lấy giá trị
của biến, bằng cách sử dụng toán tử * (tham chiếu ngược, dereference operator):


Ví dụ: #include
#include
using namespace std;
int main() {
string food = "Pizza"; // khai báo biến
string ptr = &food; // khai báo pointer
cout << "Value of food: " << food << endl;
cout << "Memory address of food: " << &food << endl;
cout << "Reference from pointer: " << ptr << endl;
cout << "Dereference of pointer: " <<
ptr << endl;
return 0; }


Kết quả:

Value of food: Pizza
Memory address of food: 0x7ffe53349920
Reference from pointer: 0x7ffe53349920
Dereference of pointer: Pizza

Lưu ý rằng dấu có thể gây nhầm lẫn ở đây, vì nó thực hiện hai điều khác nhau trong mã của
chúng ta: Khi được sử dụng trong khai báo (string
ptr), nó sẽ tạo ra một biến con trỏ. Khi
không được sử dụng trong khai báo, nó hoạt động như một toán tử tham chiếu ngược.

Free download pdf