学员答疑4

发布时间 2023-07-04 11:24:47作者: BAG225

指针数组和数组指针

对于指针数组和数组指针的概念,下面是简要的解释:

指针数组(Pointer array)是指一个数组,其中的每个元素都是指针。这意味着数组中存储的是指针值,每个指针可以指向不同的内存地址。例如,int *ptrArray[5]; 声明了一个包含5个元素的指针数组,每个元素都是一个 int 指针。

数组指针(Array pointer)是指一个指针,它指向一个数组。这意味着指针指向了整个数组的起始位置,可以通过指针访问整个数组。例如,int (*ptr)[5]; 声明了一个指针,它指向一个包含5个 int 元素的数组。

下面是一个使用指针数组和数组指针的示例:

#include <stdio.h>

int main() {
    int *ptrArray[5];   // 指针数组
    int arr[5] = {1, 2, 3, 4, 5};
    int (*ptr)[5];      // 数组指针

    for (int i = 0; i < 5; i++) {
        ptrArray[i] = &arr[i];   // 指针数组存储每个元素的地址
    }

    ptr = &arr;   // 数组指针指向整个数组

    // 通过指针数组访问数组元素
    for (int i = 0; i < 5; i++) {
        printf("Element %d: %d\n", i, *(ptrArray[i]));
    }

    // 通过数组指针访问数组元素
    for (int i = 0; i < 5; i++) {
        printf("Element %d: %d\n", i, *(*ptr + i));
    }

    return 0;
}

这个示例展示了如何使用指针数组存储每个元素的地址,以及如何使用数组指针访问整个数组的元素。输出将会显示数组中的元素值。