Computer >> Máy Tính >  >> Lập trình >> lập trình C

Giải thích khái niệm Array of Pointer và Pointer to Pointer trong lập trình C

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

Giải thích khái niệm Array of Pointer và Pointer to Pointer trong lập trình C

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