指针与三维数组
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])
{
}
编程就是算法和数据结构,算法和数据结构是编程的灵魂。