Thứ Bảy, 4 tháng 5, 2024

36. Con trỏ cấp 2 trong C++

Như bạn đã biết bản chất của con trỏ trong C là nó trỏ đến địa chỉ ô nhớ của một giá trị, con trỏ cũng là một biến. Vậy khái niệm con trỏ cấp 2 hay con trỏ trỏ tới con trỏ trong C là con trỏ trỏ đến địa chỉ ô nhớ của một con trỏ khác.

Cú pháp

Cú pháp của con trỏ cấp 2, có hai toán tử ** trước tên con trỏ.

int **p2;

Tương tự nếu bạn muốn lưu địa chỉ của con trỏ cấp 2 thì bạn cần con trỏ cấp 3, muốn lưu địa chỉ của con trỏ cấp 3 thì cần con trỏ cấp 4...

Số lượng dấu * trước tên biến sẽ thể hiện con trỏ là cấp 1, 2 , hay 3. Ví dụ *ptr là con trỏ cấp 1, **ptr là con con trỏ cấp 2 và ***ptr là con trỏ cấp 3

Chúng ta sẽ sử dụng code của bài trước để làm ví dụ. Đây là code bài trước:


#include <iostream>
 
using namespace std;

int main() {
    int number = 50;
    int *p;
    p = &number; // luu tru dia chi cua bien number
    cout <<"Gia tri cua number la: " << number << endl;
    cout <<"Dia chi cua number la: " << &number << endl; // Lệnh in địa chỉ
     cout <<"Gia trị cua number la: " << *p << endl;// Toán tử * trước tên con trỏ, giá trị của biến number
    cout <<"Dia chi cua biến number la: "<< p << endl; //Tên con trỏ, địa chỉ của biến number
    return 0;
}

 

Chúng ta sẽ thêm một biến con trỏ cấp 2 gọi là p2 và gán giá trị cho nó là địa chỉ bộ nhớ của biến p.

 

#include <iostream>
 
using namespace std;

int main() {
    int number = 50;
    int *p;
    int **p2;    //con tro tro toi con tro
    p = &number; // luu tru dia chi cua bien number
    p2 = &p;
    cout <<"Gia tri cua number la: " << number << endl;
    cout <<"Dia chi cua number la: " << &number << endl; // Lệnh in địa chỉ
    cout <<"Gia trị cua number la: " << *p << endl;// Toán tử * trước tên con trỏ, giá trị của biến number
    cout <<"Dia chi cua biến number la: "<< p << endl; //Tên con trỏ, địa chỉ của biến number
    cout <<"Dia chi cua con trỏ p la: " << p2 << endl; //Địa chỉ của CON TRO p
    cout <<"Gia tri cua bien number la: "<< **p2 << endl;//Giá trị của biến number

    return 0;
}

 

Bấm Run để chạy thử , chúng ta vẫn sử dụng IDE Online.

 


 

Phần tiếp theo

 

Phần trước

Không có nhận xét nào:

Đăng nhận xét