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

Giải thích mảng con trỏ trong ngôn ngữ lập trình C.

Con trỏ là một biến lưu trữ địa chỉ của một biến khác.

Tính năng

  • Con trỏ tiết kiệm dung lượng bộ nhớ.
  • Thời gian thực thi của con trỏ nhanh hơn do truy cập trực tiếp vào vị trí bộ nhớ.
  • Với sự trợ giúp của con trỏ, bộ nhớ được truy cập hiệu quả, tức là bộ nhớ được cấp phát và phân bổ động.
  • Con trỏ được sử dụng với cấu trúc dữ liệu.

Khai báo và khởi tạo con trỏ

Hãy xem xét tuyên bố sau -

int qty = 179;

Trong bộ nhớ, biến có thể được biểu diễn như sau -

Giải thích mảng con trỏ trong ngôn ngữ lập trình C.

Khai báo một con trỏ

Nó có nghĩa là ‘p’ là một biến con trỏ, giữ địa chỉ của một biến số nguyên khác, như được hiển thị bên dưới -

Int *p;

Khởi tạo con trỏ

Toán tử địa chỉ (&) được sử dụng để khởi tạo một biến con trỏ.

Ví dụ - int qty =175;

int * p;

p =&qty;

Mảng con trỏ

Nó là tập hợp các địa chỉ (hoặc) tập hợp các con trỏ

Tuyên bố

Sau đây là khai báo cho mảng con trỏ -

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ử nguyên.

Khởi tạo

‘&’ Đượ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]);

Chương trình mẫu

Dưới đây là chương trình cho mảng con trỏ -

#include<stdio.h>
main ( ){
   int a[3] = {10,20,30};
   int *p[3],i;
   for (i=0; i<3; i++)
      p[i] = &a[i];
   printf ("elements of the array are \n");
   for (i=0; i<3; i++)
      printf ("%d \t", *p[i]);
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

elements at the array are : 10 20 30

Ví dụ 2

Dưới đây là chương trình cho mảng con trỏ đến chuỗi -

#include <stdio.h>
#include <stdlib.h>
int main(void){
   char *a[5] = {"one", "two", "three", "four", "five"};
   int i;
   printf ( "the strings are at locations:\n");
   for (i=0; i<5; i++)
      printf ("%d\n", a[i]);
   return 0;
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

The strings are at locations:
4210688
4210692
4210696
4210702
4210707