Một con trỏ tới một con trỏ là một form không định hướng hoặc một chuỗi con trỏ. Thông thường, một con trỏ chứa địa chỉ của một biến. Khi chúng ta định nghĩa một con trỏ tới một con trỏ, con trỏ đầu tiên chứa địa chỉ của con trỏ thứ hai, mà trỏ tới vị trí mà chứa giá trị thực sự như hiển thị trong sơ đồ dưới đây:
Một biến, mà là một con trỏ tới một con trỏ, phải được khai báo. Điều này được thực hiện bởi việc đặt một dấu sao (*) ở trước tên của nó. Ví dụ, sau đây là khai báo một con trỏ tới một con trỏ trong kiểu int:
int **var;
Khi một giá trị mục tiêu được trỏ không định hướng bởi một con trỏ tới một con trỏ, truy cập giá trị đó yêu cầu rằng toán tử dấu sao được áp dụng hai lần, như dưới ví dụ:
#include
using namespace std;
int main ()
{
int var;
int *ptr;
int **pptr;
var = 125;
// lay dia chi cua var
ptr = &var;
// lay dia chi cua ptr boi su dung dia chi cua toan tu &
pptr = &ptr;
// Lay gia tri boi su dung pptr
cout << "Gia tri cua var la: " << var << endl;
cout << "Gia tri tai *ptr la: " << *ptr << endl;
cout << "Gia tri tai **pptr la: " << **pptr << endl;
return 0;
}
Chạy chương trình C++ trên sẽ cho kết quả như hình sau: