您的位置:

C++数组指针:定义和使用

C++指针数组:定义、初始化和遍历

一、数组指针的定义和使用

数组指针是指一个指针,该指针指向一个数组的首地址。它可以用来指向一个一维数组、二维数组、多维数组等。

声明一个数组指针的方法为:

    数组类型 (* 指针变量名)[元素个数];
    如:int (*p)[5]; //p是一个指针,指向一个拥有5个元素的int数组的首地址。

使用数组指针的过程中,需要注意指针和数组的对应关系。例如,可以通过指针访问数组中的元素:

    int arr[5] = {1, 2, 3, 4, 5};
    int (*p)[5] = &arr; //将指向数组arr的指针赋值给指针p
    cout << (*p)[0] << endl; //输出1
    cout << (*p)[1] << endl; //输出2

这里需要注意,使用指针访问数组中的元素时需要用括号将指针和数组下标括起来。

二、指针数组的定义、初始化和遍历

指针数组是指一个数组,该数组的元素为指针类型。它的每个元素都指向一个不同的地址。

声明一个指针数组的方法为:

    类型* 数组名[元素个数];
    如:int* ptr[5]; //ptr是一个数组,包含5个整型指针

指针数组的初始化可以分为两步:

第一步:定义指针数组,并为其分配存储空间。

    int* ptr[5]; //定义包含5个指向int类型的指针的指针数组

第二步:为每个指针指定指向的对象。

    int a = 10, b = 20, c = 30, d = 40, e = 50;
    ptr[0] = &a;
    ptr[1] = &b;
    ptr[2] = &c;
    ptr[3] = &d;
    ptr[4] = &e;

指针数组中的元素可以通过下标遍历访问。

    for(int i = 0; i < 5; i++) {
        cout << *ptr[i] << endl; //输出每个指针指向的整型变量的值
    }

三、指针数组与数组指针的区别

指针数组和数组指针虽然有些相似,但仍然有区别。

指针数组可以被认为是一个数组,其中包含的元素是指针类型,每个指针指向不同的存储地址。

而数组指针是指向一个数组的指针,它本身是一个指针类型,指向的数组元素可以是一维、二维、多维等。

另外,指针数组中的元素可以通过下标遍历访问,而数组指针需要通过指针访问数组元素。

四、总结

数组指针和指针数组都是非常重要的C++基础知识。理解它们的定义、初始化和使用方式可以帮助我们更加熟练地进行各种数组的操作。

例如,在函数中传递一维、二维数组时,使用指针和数组指针可以避免数组复制带来的性能损耗。

代码示例:

    
        //数组指针的定义和使用
        #include 
   
        using namespace std;
        int main() {
            int arr[5] = {1, 2, 3, 4, 5};
            int (*p)[5] = &arr;
            cout << (*p)[0] << endl;
            cout << (*p)[1] << endl;
            return 0;
        }

        //指针数组的定义、初始化和遍历
        #include 
    
        using namespace std;
        int main() {
            int* ptr[5];
            int a = 10, b = 20, c = 30, d = 40, e = 50;
            ptr[0] = &a;
            ptr[1] = &b;
            ptr[2] = &c;
            ptr[3] = &d;
            ptr[4] = &e;
            for(int i = 0; i < 5; i++) {
                cout << *ptr[i] << endl;
            }
            return 0;
        }