C ++ 指针 | 指针与三维数组_6

  • Post author:
  • Post category:其他


指针与三维数组

1、

三维数组,有些朋友会很少接触,这里上码,看看三维数组是怎么样的:

#include<iostream>

int main()
{
    int C[3][2][2] = {{{2,5},{7,5}},{{3,4},{6,1}},{{0,8},{11,13}}};
    printf("%d %d %d %d", C, *C, C[0], &C[0][0]);
}

运行结果:

以上代码,我们打印了各个变量的地址,都是相同的的。

2、

#include<iostream>

int main()
{
    int C[3][2][2] = {{{2,5},{7,5}},{{3,4},{6,1}},{{0,8},{11,13}}};
    printf("%d %d %d %d\n", C, *C, C[0], &C[0][0]);
    printf("%d\n", *(C[0][0]+1));
}

运行结果:

位置角度:C[0][0] 第一个[ 0 ]确定数组的第一行,第二个[0] 第一行的哪个数组,+ 1 是确定数组里面具体的值。

内存角度:C[0][0] 第一个[ 0 ][ 0 ]获取第一个数组的头地址,+1 是在头地址 + 4个字节,也就是 5 的位置。

可以尝试不同的输入,深入了解。

多维数组作为函数

简单看以下代码,即可了解:

1、

一维参数:

#include<iostream>
void Func(int *A)
{
}

int main()
{   
    int A[2] = {1,2};
    Func(A);
}

也可以这样:

void Func(int A[])
{
}

2、

二维参数:

#include<iostream>

void Func(int (*A)[3])
{
}

int main()
{
    int B[2][3] = {{2,4,6},{5,7,8}};
    Func(B);
}

也可以这么写:

void Func(int A[][3])
{
}

3、

三维参数:

#include<iostream>

void Func(int (*A)[2][2])
{
}

int main()
{
    int C[3][2][2] = {{{2,5},{7,5}},
                        {{3,4},{6,1}},
                        {{0,8},{11,13}}};
    Func(C);
}

也可以这么写:

void Func(int A[][2][2])
{
}

编程就是算法和数据结构,算法和数据结构是编程的灵魂。