Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Mảng con trỏ và Con trỏ tới con trỏ (Array of Pointers & Pointer to Pointer) trong C


Mảng con trỏ (Array of Pointers)

Khai báo: kieu *ten_mang[kich_thuoc];

Ví dụ: int *p[5]; – mảng 5 con trỏ int.

Khởi tạo

int a[3] = {10,20,30};
int *p[3];
for (int i=0; i<3; i++) p[i] = &a[i]; // hoặc p[i] = a+i;

Truy cập

for (int i=0; i<3; i++) printf("%d ", *p[i]);

Chương trình

#include <stdio.h>
int main() {
    int a[3] = {10,20,30};
    int *p[3];
    for (int i=0; i<3; i++) p[i] = &a[i];
    printf("Cac phan tu: ");
    for (int i=0; i<3; i++) printf("%d ", *p[i]);
    return 0;
}

Kết quả

Cac phan tu: 10 20 30

Con trỏ tới con trỏ (Pointer to Pointer)

Biến lưu địa chỉ của một con trỏ khác.

Khai báo

kieu **ten_bien;

Ví dụ: int **p;

Khởi tạo

int a = 10;
int *p = &a;
int **q = &p;

Truy cập

  • *p – giá trị của a (10)
  • **q – giá trị của a qua q (10)

Chương trình

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    int **q = &p;
    printf("a = %d\n", a);
    printf("*p = %d\n", *p);
    printf("**q = %d\n", **q);
    return 0;
}

Kết quả

a = 10
*p = 10
**q = 10