Mảng con trỏ
Cũng giống như bất kỳ kiểu dữ liệu nào khác, chúng ta cũng có thể khai báo một mảng con trỏ.
Tuyên bố
datatype *pointername [size];
Ví dụ, int * p [5]; // Nó đại diện cho một mảng con trỏ có thể chứa 5 địa chỉ phần tử số nguyên
Khởi tạo
Dấu ‘&’ được sử dụng để khởi tạo
Ví dụ:
int a[3] = {10,20,30};
int *p[3], i;
for (i=0; i<3; i++) (or) for (i=0; i<3,i++)
p[i] = &a[i];
p[i] = a+i; Đang truy cập
Toán tử hướng dẫn (*) được sử dụng để truy cập.
Ví dụ:
for (i=0, i<3; i++)
printf ("%d" *p[i]); Ví dụ
#include<stdio.h>
main (){
int a[3] = {10,20,30};
int *p[3],i;
for (i=0; i<3; i++)
p[i] = &a[i]; //initializing base address of array
printf (elements of the array are”)
for (i=0; i<3; i++)
printf ("%d \t", *p[i]); //printing array of pointers
getch();
} Đầu ra
elements at the array are : 10 20 30
Con trỏ tới con trỏ
Con trỏ tới con trỏ là một biến chứa địa chỉ của một con trỏ khác.
Tuyên bố
datatype ** pointer_name;
Ví dụ, int ** p; // p là một con trỏ tới con trỏ
Khởi tạo
Dấu ‘&’ đượ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.
Ví dụ
#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
Giá trịa=10 a value through pointer = 10 a value through pointer to pointer = 10