关于二维数组常见调用方式

在最近几次开发中在二维数组作为形参的是调用中老显卡壳,特整理了下几种常见的调用模式模式(大家从代码中体会吧)!

正确的应用模式一:

void func1(int iArray[ ][10])
{

}

int main()
{
    int array[10][10];
    func1(array);

}
正确的应用模式二(应用一维数组指针作为参数):
void func2(int (*pArray)[10]) //[10] 是指列
{

}

void func2_1(int (*pArray)[ ]) //未亲测
{

}

int main()
{
    int array[10][10];
    func2(array);
}

其实二维数组名就是一个指向一维数组的指针,所以这种声明方式OK。必须指定一维数组的长度,如果没有指定的话,函数声明编译通过。但是如果一旦有调用代码,就有编译不通过,因为没有实参类型能匹配int[].

正确的应用模式三(应用二维数组引用作为参数)
void func3(int (&pArray)[10][10])//在此必须指明二个维数
{

}

int main()
{
    int array[10][10];
    func3(array);
}

必须指定两个维度的长度


正确的应用模式四(应用二维指针数组作为参数):
void func4(int (*pArray)[10][10])//必须指定二个维数
{

}

int main()
{
    int array[10][10];
    func4(&array);

}
必须指定两个维度的长度
注:以上四种方法通用,但是数组传递时,仅传值,对传入参数不做改变(个人只用到前两种)
发布了20 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_36662608/article/details/53792439