Sử dụng con trỏ, phép toán *

Một phần của tài liệu Bài Giảng Kỹ Thuật Lập Trình (Trang 57)

• Để con trỏ p trỏ đến biến x ta phải dùng phép gán p = địa chỉ của x. − Nếu x không phải là mảng ta viết: p = &x.

− Nếu x là mảng ta viết: p = x hoặc p = &x[0].

• Không gán p cho một hằng địa chỉ cụ thể. Ví dụ viết p = 200 là sai. • Phép toán * cho phép lấy nội dung nơi p trỏ đến, ví dụ để gán nội dung nơi p trỏ đến cho biến f ta viết f = *p.

• & và * là 2 phép toán ngược nhau. Cụ thể nếu p = &x thì x = *p. Từ đó nếu p trỏ đến x thì bất kỳ nơi nào xuất hiện x đều có thể thay được bởi *p và ngược lại.

Ví dụ 1 :

int i, j ; // khai báo 2 biến nguyên i, j

p = &i; // cho p trỏ tới i q = &j; // cho q trỏ tới j

cout << &i ; // hỏi địa chỉ biến i

cout << q ; // hỏi địa chỉ biến j (thông qua q) i = 2; // gán i bằng 2

*q = 5; // gán j bằng 5 (thông qua q) i++ ; cout << i ; // tăng i và hỏi i, i = 3

(*q)++ ; cout << j ; // tăng j (thông qua q) và hỏi j, j = 6 (*p) = (*q) * 2 + 1; // gán lại i (thông qua p)

cout << i ; // 13

Qua ví dụ trên ta thấy mọi thao tác với i là tương đương với *p, với j là tương đương với *q và ngược lại.

1.3. Các phép toán với con trỏ

Trên đây ta đã trình bày về 2 phép toán một ngôi liên quan đến địa chỉ và con trỏ là & và *. Phần này chúng ta tiếp tục xét với các phép toán khác làm việc với con trỏ.

Một phần của tài liệu Bài Giảng Kỹ Thuật Lập Trình (Trang 57)