Các toán tử con trỏ

Một phần của tài liệu TÀI LIỆU THAM KHẢO HƯỚNG DẪN THỰC HÀNH CƠ SỞ LẬP TRÌNH TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP. HỒ CHÍ MINH KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ (Trang 114 - 115)

Hai toán tử đặc biệt được dùng với con trỏ, đó là toán tử & *. Toán tử & là một toán tử một ngôi và nó trả về địa chỉ của toán hạng. Hai toán tử này có cùng độ ưu tiên như toán tử âm (-) và cao hơn các toán tử số học còn lại.

Ví dụ 6.3. Toán tử &

Xét hai câu lệnh:

(1) int var1 = 5, *var2; (2) var2 = &var1;

- Câu lệnh (1) khai báo biến var1 (số nguyên) có giá trị khởi tạo là 5, biến con trỏ var2 trỏ đến biến số nguyên.

- Câu lệnh (2) lấy địa chỉ bộ nhớ của biến var1 gán cho biến con trỏ var2.

- Toán tử & có thể hiểu là trả về “địa chỉ của”. Vì vậy, phép gán (2) có nghĩa là “var2 nhận địa chỉ của var1”. Giả sử địa chỉ trong bộ nhớ của biến var1 là 1000. Sau phép gán (2), var2 sẽ có giá trị 1000.

Toán tử * được dùng với con trỏ là phần bổ sung của toán tử &. Nó là một toán tử một ngôi và trả về giá trị chứa trong địa chỉ của biến được trỏ tới bởi biến con trỏ.

Ví dụ 6.4. Toán tử *

Xét ba câu lệnh:

(1) int var1 = 5, *var2; (2) var2 = &var1; (3) int var3 = *var2;

- Câu lệnh (1) khai báo biến var1 (số nguyên) có giá trị khởi tạo là 5, biến con trỏ var2 trỏ đến biến số nguyên.

- Câu lệnh (2) lấy địa chỉ bộ nhớ của biến var1 gán cho biến con trỏ var2.

- Câu lệnh (3) khai báo biến giá trị var3 (số nguyên) và khởi tạo bằng cách gán giá trị được lưu trữ tại địa chỉ của biến được trỏ tới bởi biến con trỏ var2.

Toán tử * có thể hiểu là “tại địa chỉ”. Vì vậy, phép gán (3) có nghĩa là “var3 nhận giá trị được trỏ tới bởi var2”. Giả sử var2 có giá trị là 1000, var3 sẽ nhận giá trị được lưu trữ tại

109 địa chỉ 1000 trong bộ nhớ và giá trị này hiện tại đang là 5. Sau phép gán (3), var3 sẽ có giá trị 5.

Ví dụ 6.5. Giá trị và địa chỉ của biến con trỏ

#include <stdio.h> int main(){

int var = 500, *ptr_var; ptr_var = &var;

/*Xuat gia tri va dia chi cua bien var*/ printf("Gia tri %d, dia chi %u\n", var, &var);

/*Xuat gia tri va dia chi cua bien ptr_var*/ printf("Gia tri %u, dia chi %u\n", ptr_var, &ptr_var);

/*Xuat gia tri và dia chi cua bien duoc tro toi boi bien con tro ptr_var*/ printf("Gia tri %d, dia chi %u\n", *ptr_var, ptr_var);

getchar(); return 0; }

Một phần của tài liệu TÀI LIỆU THAM KHẢO HƯỚNG DẪN THỰC HÀNH CƠ SỞ LẬP TRÌNH TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP. HỒ CHÍ MINH KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ (Trang 114 - 115)