C++之数组与指针

在C++中,数组与指针是很相似的,很多时候可以将指针与数组名混用。本文主要讨论其不同的部分,代码如下:

#include 

using namespace std;

int main()
{
     
    //指针的指针
    int x = 10;
    int *px = &x;
    int **ppx = &px;
    cout << ppx << ": " << *ppx << ": " << **ppx << endl;

    //数组与指针
    int x3[3] = {
     1, 2, 3};
    int *px3 = x3;
    int **ppx3 = &px3;
    cout << ppx3 << ": " << *ppx3 << ": " << **ppx3 << endl;

    //数组的指针
    int(*pax3)[3] = &x3;
    //ppx3 = &x3;
    cout << pax3 << ": " << *pax3 << ": " << **pax3 << endl;

    //指针的数组
    int *apx3[3] = {
     x3, x3 + 1, x3 + 2};
    cout << apx3 << ": " << *apx3 << ": " << **apx3 << endl;

    return 0;
}

其输出结果为:

0x28fe8c: 0x28fe90: 10
0x28fe7c: 0x28fe80: 1
0x28fe80: 0x28fe80: 1
0x28fe70: 0x28fe80: 1

当获取数组名的地址时,此时的数组名的地址在数值上等数组名自身。而二级指针与其所指向指针在数值上并不相同。

数组的指针并不是二级指针。

数组的指针是指向整个数组的指针,其指针加一后的实际增量为整个数组的字节数。而二级指针的增量为指针的长度。

你可能感兴趣的:(C++,c++,指针,数组,数组名)