Trong ngôn ngữ lập trình C, con trỏ tới con trỏ hoặc con trỏ kép là một biến chứa địa chỉ của một con trỏ khác.
Tuyên bố
Dưới đây là khai báo cho con trỏ tới con trỏ -
datatype ** pointer_name;
Ví dụ:int ** p;
Ở đây, p là một con trỏ tới con trỏ.
Khởi tạo
‘&’ Được sử dụng để khởi tạo.
Ví dụ:
int a = 10; int *p; int **q; p = &a;
Đang truy cập
Toán tử hướng dẫn (*) được sử dụng để truy cập
Chương trình mẫu
Sau đây là chương trình C cho con trỏ kép -
#include<stdio.h> main ( ){ int a = 10; int *p; int **q; p = &a; q = &p; printf("a =%d ",a); printf(" a value through pointer = %d", *p); printf(" a value through pointer to pointer = %d", **q); }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Giá trịa=10 a value through pointer = 10 a value through pointer to pointer = 10
Ví dụ
Bây giờ, hãy xem xét một chương trình C khác hiển thị mối quan hệ giữa con trỏ với con trỏ.
#include<stdio.h> void main(){ //Declaring variables and pointers// int a=10; int *p; p=&a; int **q; q=&p; //Printing required O/p// printf("Value of a is %d\n",a);//10// printf("Address location of a is %d\n",p);//address of a// printf("Value of p which is address location of a is %d\n",*p);//10// printf("Address location of p is %d\n",q);//address of p// printf("Value at address location q(which is address location of p) is %d\n",*q);//address of a// printf("Value at address location p(which is address location of a) is %d\n",**q);//10// }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Value of a is 10 Address location of a is 6422036 Value of p which is address location of a is 10 Address location of p is 6422024 Value at address location q(which is address location of p) is 6422036 Value at address location p(which is address location of a) is 10