`
ILoveDOUZHOU
  • 浏览: 78446 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

二维数组作为参数在函数中传递

 
阅读更多

首先,void f(a[ ][ ]);是不正确的定义

二维数据作为函数参数时,要明确指明二维数组的列数,这样编译器才能知道如何寻址。

正确的方式有: void f (a[4][6]);

void f(a[ ][6]);//二维数组的行数可以省略

另外,也不能用非常量定义二维数组作为其下标。

void f ( a[m][n]);是严重错误的;


正确的应用模式一

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

}

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

}

正确的应用模式二(应用一维指针数组作为参数)

void func2(int (*pArray)[10])
{

}

void func2_1(int (*pArray)[ ]) //编译通过,无法调用
{

}


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

正确的应用模式三(应用二维数组引用作为参数)

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);

}


注:以上四种方法通用,但是数组传递时,仅传值,对传入参数不做改变


补充:应用二重指针作为形参,传入的实参也必须是二重指针,巧妙地利用new分配内存空间,可以用非常量定义

void func5(int** pArray, int m, int n)
{

}

#include <ctime>
int main()
{
int m = 10;
int n = 10;

int** pArray = new int* [m];
pArray[0] = new int[m * n];
// 分配连续内存,动态创建二维数组

// 用pArray[1][0]无法寻址,还需指定下标寻址方式
for(int i = 1; i < m; i++)
{
pArray[i] = pArray[i-1] + n;
}

func5(pArray, m, n);
}





分享到:
评论

相关推荐

    C语言中二维数组作为函数参数来传递的三种方法

    主要给大家介绍了关于C语言中二维数组作为函数参数来传递的三种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C语言有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    二维数组的行列互换(函数调用实现)

    实现数组的行列互换 形参使用二维数组。函数调用使用引用传递,比较基础。

    编写一个在具有m行n列的二维数组各元素中找出最大元和最小元并显示在屏幕上的函数模板,并通过主函数对它进行调用以验证其正确性。例如,可设计该函数模板的原型为:

    注意:函数模板maxMin中要处理二维数组A的m行n列的诸元素,但设计第一参数传递过来的是Type*类型的首元素指针,所以具体处理时可以按照如下的“一维数组”方式来进行(共处理m乘以n个数据 -- 也即二维数组A的m行n列...

    函数、内存、一维数组、二维数组

    在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。 重载的特点: 与返回值类型无关,只看参数列表。 重载的好处: 方便于阅读,优化了程序设计。 重载示例: //返回两个...

    VC将二维数组显示为图像

    将二维数组传递给本函数,本函数会将数组显示为图像。注意数组传递前需先转换为char型。 图像显示是windows编程的基础,本程序可作为一个子函数用于调用,可同时显示多张图像。

    C++ 二维数组参数传递的实现方法

    我定义了这样一个数组,我想把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做?  第一种方式是直接传递二维数组,但是必须标明第二维的值,因为如果只是传递a[][],编译器...

    C++中指针指向二维数组实例详解

    C++中指针指向二维数组实例详解 一维指针通常用指针表示,其指向的地址是数组第一元素所在的内存地址,如下 int ary[4][5]; int(*aryp)[5] = ary; 那么ary[4]相当于int(*aryp),以下理解如此,但参数传递需要知道...

    snail:一种将二维数组的元素按顺时针螺旋形排列成新的一维数组的算法

    创建任何二维数组,调用snail函数,并将其传递给二维数组。 输入 let array = [ [ 1 , 2 , 3 , 1 ] , [ 4 , 5 , 6 , 4 ] , [ 7 , 8 , 9 , 7 ] , [ 7 , 8 , 9 , 7 ] ] console . log ( snail ( array ) ) ; 输出 [ 1 ...

    C++中用指向数组的指针作函数参数

    多维数组名作为函数参数传递:在二维数组中,数组名a是指向首行a[0]的指针,也就是说a=&a[0]; a[0]是指向首元素a[0][0]的指针,也就是说a[0]=&a[0][0]

    成绩处理(XDOJ指针).cpp

    输入5个学生,4门课成绩,二维数组stu[5][4]表示,行标表示学生,列标表示课程成绩,分别编写函数aver()、fals()和well()完成:(1)求第一门课的平均分;(2)统计有2门以上课程不及格的同学人数;(3)平均成绩在90分...

    C++函数和数组

    1.掌握函数的定义和使用方法;掌握函数调用的方法;掌握函数参数传递的机制;...2.熟练掌握一维数组和二维数组的定义、引用和初始化;掌握字符数组与字符串的关系以及字符串变量的表示,熟练字符串处理函数的应用。

    C++基础编程 学习笔记

    数组(一维数组,二维数组)、 函数(函数定义,函数调用,值传递,函数的常见样式,函数的声明,函数的分文件编写) 指针(指针变量定义使用,指针的内存空间,空指针与野指针,const修饰指针,指针和数组,指针...

    指针数组和数组指针的区别.doc

    array()这个函数,这个函数中形式参数是char *array[]和代码中的char *test[]一样,同为字符指针,当你把参数传递过来的时候,事实上不是把数组内容传递过来,test的首地址传递了进来,由于array是指针,所以在内存中它在栈...

    八十多条C语言基础教程

    (31)二维数组应用实例(2) (32)用一维数组来存储字符串 (33)字符串的输入与输出 (34)字符串数组 (35)用于字符串处理的函数 (36)字符串应用实例 (37)传给Main函数的参数 (38)函数指针 (39)函数的递归调用 (40)变量作用...

    python通过ctypes调用c,python向c函数通过结构体传递python回调函数指针,c回调python

    python向c函数传递二维数组,一维数组,指针灯参数;python向c函数传递结构体指针,c函数向python返回结构体指针;python向c以参数形式传递回调函数,且c函数回调python回调函数;python向c以参数形式传结构体指针,...

    C程序设计(第四版)学习辅导【谭浩强】

    6.2.2怎样引用二维数组的元素151 6.2.3二维数组的初始化152 6.2.4二维数组程序举例153 6.3字符数组155 6.3.1怎样定义字符数组155 6.3.2字符数组的初始化156 6.3.3怎样引用字符数组中的元素156 6.3.4字符串和字符串...

    C语言程序设计(谭浩强)第三版

     6.2.2怎样引用二维数组的元素  6.2.3二维数组的初始化  6.2.4二维数组程序举例  6.3.字符数组 6.3.1怎样定义字符数组  6.3.2字符数组的初始化  6.3.3怎样引用字符数组中的元素  6.3.4字符串和字符串结束标志...

Global site tag (gtag.js) - Google Analytics