【带头学C++】----- 三、指针章 ---- 3.6 指针数组

       在 C++ 中,指针数组是一个数组,它的每个元素都是一个指针。指针数组可以用于存储和管理一组指针,这些指针可以指向不同类型的数据。

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

#include 

int main() {
    int num1 = 10;
    int num2 = 20;
    int num3 = 30;

    int* arr[3]; // 声明一个指针数组,包含 3 个指针元素

    arr[0] = &num1; // 第一个元素指向 num1
    arr[1] = &num2; // 第二个元素指向 num2
    arr[2] = &num3; // 第三个元素指向 num3

    // 使用指针数组中的元素来访问和修改对应的值
    *arr[0] = 100; // 修改 num1 的值为 100

    // 输出指针数组中的元素值
    std::cout << "Value of num1: " << *arr[0] << std::endl;
    std::cout << "Value of num2: " << *arr[1] << std::endl;
    std::cout << "Value of num3: " << *arr[2] << std::endl;

    return 0;
}

       在这个示例中,我们首先声明了一个包含 3 个指针元素的指针数组 arr。然后,我们分别将 num1num2 和 num3 的地址分别赋给了数组中的元素。

       可以使用指针数组中的元素来访问和修改对应的值。例如,通过 *arr[0] 可以访问或修改 num1 的值。

       通过指针数组,我们可以方便地管理多个指针,并通过下标访问和修改对应的指针。这种技术在许多场景中都很有用,例如在函数中传递多个指针、管理动态分配的内存块等。

当涉及到指针数组时,还有一些拓展的概念和技术可以考虑。

  1. 动态分配内存: 指针数组可以与动态分配的内存块一起使用。通过使用 new 运算符为指针数组的元素动态分配内存,可以在运行时动态地调整数组的大小。例如:

    int* arr[5];
    
    for (int i = 0; i < 5; i++) {
        arr[i] = new int;
        *arr[i] = i + 1;
    }
    
    // 使用指针数组中的元素
    for (int i = 0; i < 5; i++) {
        std::cout << *arr[i] << " ";
    }
    
    // 释放动态分配的内存
    for (int i = 0; i < 5; i++) {
        delete arr[i];
    }
    

    在这个示例中,我们首先声明了一个有 5 个整数指针元素的指针数组 arr。然后,使用 new 运算符为每个指针元素分配单独的内存块,并设置各个元素的值。最后,使用 delete 运算符释放动态分配的内存。

  2. 指针数组作为函数参数: 指针数组可用作函数的参数,允许函数在处理多个指针时进行传递和修改。例如:

    void printArray(int* arr[], int size) {
        for (int i = 0; i < size; i++) {
            std::cout << *arr[i] << " ";
        }
    }
    
    int main() {
        int num1 = 10;
        int num2 = 20;
        int num3 = 30;
    
        int* arr[3];
        arr[0] = &num1;
        arr[1] = &num2;
        arr[2] = &num3;
    
        printArray(arr, 3);
    
        return 0;
    }
    

    在这个示例中,我们定义了一个名为 printArray 的函数,它接受一个指向指针数组的指针和数组的大小。该函数在循环中打印出指针数组中各个元素的值。在主函数中,我们创建了一个指针数组 arr,并将其作为参数传递给 printArray 函数。

  3. 指针数组和多维数组: 指针数组可以用于表示和操作多维数据结构。例如,可以使用指针数组来表示一个二维数组。以下是一个示例:

    int main() {
        int arr1[] = {1, 2, 3};
        int arr2[] = {4, 5, 6};
        int arr3[] = {7, 8, 9};
    
        int* arr[3] = {arr1, arr2, arr3};
    
        // 访问二维数组中的元素
        std::cout << arr[1][2] << std::endl; // 输出 6
    
        return 0;
    }
    

    在这个示例中,我们声明了一个包含 3 个整数指针的指针数组 arr,它的每个元素都指向一个整数数组。通过 arr[1][2] 可以访问到二维数组中的元素 6。

你可能感兴趣的:(C++从基础到抗大旗,c++,算法,开发语言,笔记,学习,c语言)