多维数组指针和函数形参

来源:互联网 发布:python 元组 列表 zip 编辑:程序博客网 时间:2024/04/30 11:03
当函数的形参为数组时:

如果为一维数组,数组大小可以不写,数组名在形参中退化为指针
void foo(int a[])
{
}
以下指针赋值和函数调用:
</pre><pre name="code" class="cpp">int a[10];p=a;foo(p);foo(a);

是合法的

如果为二维数组,第一维可以不写,但第二维必须定义,数组名在形参中退化为指向二维数组的指针. 注意,第二维的大小必须和指向的数组一致
void foo(int a[][10])
{
}
以下指针赋值和函数调用:
int (*p)[10];
int (*p1)[15];//数组大小不一致
int a[2][10];p=a;p1=a; //errorfoo(p);foo(p1);//errorfoo(a);



如果为三维数组,第一维可以不写,但第二维,第三维必须定义【多维数组以此类推】,数组名在形参中退化为指向三维数组的指针. 注意,第二维,第三维的大小必须和指向的数组一致
void foo(int a[][10][20]){}

以下指针赋值和函数调用:
int (*p)[10][20];int (*p1)[10][21];//数组大小不一致int a[3][10][20];p=a;p1=a; //errorfoo(p);foo(p1);//errorfoo(a);

最后,数组大小的维度不一定在编译的时候确定,可以是动态计算的
比如以下函数的定义和调用都是合法的
void foo1(int n, int m){int a[n][m];}


总结,我的笔记比较水



0 0