Một con trỏ tới một con trỏ là một mẫu (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 **contro;
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
int main ()
{
int bien1;
int *contro;
int **vcontro;
bien1 = 667;
/* lay dia chi cua bien1 */
contro = &bien1;
/* lay dia chi cua contro boi su dung toan tu & */
vcontro = &contro;
/* lay gia tri boi su dung vcontro */
printf("Gia tri cua bien1 = %d\n", bien1 );
printf("Gia tri co san tai *contro = %d\n", *contro );
printf("Gia tri co san tai **vcontro = %d\n", **vcontro);
printf("\n===========================\n");
printf("Hoc TV chuc cac ban hoc tot! \n");
return 0;
}
Biên dịch và chạy chương trình C trên sẽ cho kết quả: