Thao tác trên con trỏ

Một phần của tài liệu Lý thuyết lập trình C++ (Trang 61 - 62)

- from alpha to omega 4 Trả về giá trị của hàm (returning value from functions)

2. Thao tác trên con trỏ

Hai toán tử * và & là hai toán tử quan trọng nhất thao tác trên con trỏ. Toán tử &, như đã nói ở trên, là toán tử một ngôi, trả về địa chỉ của toán hạng bên phải nó. Để hình dung khái niệm địa chỉ ta coi bộ nhớ như một khu phố. Bộ nhớ được chia thành các thành các vùng nhớ, giống như khu phố được phân chia thành các hộ gia đình. Mỗi một vùng nhớ được đánh số thứ tự giống như mỗi hộ gia đình có một số nhà. Số thứ tự này gọi là địa chỉ của vùng nhớ đó. Ta cũng cần phân biệt giữa địa chỉ vùng nhớ và nội dung chứa trong vùng nhớ. Địa chỉ giống như số nhà còn nội dung hay giá trị (value) chứa trong vùng nhớ giống như tài sản

trong nhà vậy. Câu lệnh: C++ Code:

Lựa chọn code | Ẩn/Hiện code

pi=&x;

đơn thuần chỉ cung cấp địa chỉ của x cho pi, nó không ảnh hưởng gì đến giá trị của x cả. Giả sử ban đầu x=5 thì sau câu lệnh trên x vẫn bằng 5. Khi con trỏ pi đã có trong tay địa chỉ của x, nó có thể “đột nhập” đến biến x để xem nội dung của x là gì, thậm chí thay đổi nó. Để làm điều này ta dùng toán tử truy xuất giá trị * (dereference). Toán tử * là toán tử một ngôi, trả về nội dung chứa trong vùng nhớ mà con toán hạng bên phải nó trỏ tới. Xem xét đoạn chương trình sau:

C++ Code:

Lựa chọn code | Ẩn/Hiện code

x=5; pi=&x;

cout << *pi << endl; // in ra giá trị nằm trong vùng nhớ mà pi trỏ tới, tức in ra 5

*pi=100; // thay đổi nội dung của x thông qua con trỏ pi

cout << x << endl; // in ra nội dung x, tức 100

Sử dụng con trỏ như trên được gọi là gián tiếp (indirection) vì nó thay đổi nội dung của biến thông qua một biến khác (biến trỏ).

Một phần của tài liệu Lý thuyết lập trình C++ (Trang 61 - 62)

Tải bản đầy đủ (DOCX)

(78 trang)
w