首先,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语言有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
实现数组的行列互换 形参使用二维数组。函数调用使用引用传递,比较基础。
注意:函数模板maxMin中要处理二维数组A的m行n列的诸元素,但设计第一参数传递过来的是Type*类型的首元素指针,所以具体处理时可以按照如下的“一维数组”方式来进行(共处理m乘以n个数据 -- 也即二维数组A的m行n列...
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。 重载的特点: 与返回值类型无关,只看参数列表。 重载的好处: 方便于阅读,优化了程序设计。 重载示例: //返回两个...
将二维数组传递给本函数,本函数会将数组显示为图像。注意数组传递前需先转换为char型。 图像显示是windows编程的基础,本程序可作为一个子函数用于调用,可同时显示多张图像。
我定义了这样一个数组,我想把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做? 第一种方式是直接传递二维数组,但是必须标明第二维的值,因为如果只是传递a[][],编译器...
C++中指针指向二维数组实例详解 一维指针通常用指针表示,其指向的地址是数组第一元素所在的内存地址,如下 int ary[4][5]; int(*aryp)[5] = ary; 那么ary[4]相当于int(*aryp),以下理解如此,但参数传递需要知道...
创建任何二维数组,调用snail函数,并将其传递给二维数组。 输入 let array = [ [ 1 , 2 , 3 , 1 ] , [ 4 , 5 , 6 , 4 ] , [ 7 , 8 , 9 , 7 ] , [ 7 , 8 , 9 , 7 ] ] console . log ( snail ( array ) ) ; 输出 [ 1 ...
多维数组名作为函数参数传递:在二维数组中,数组名a是指向首行a[0]的指针,也就是说a=&a[0]; a[0]是指向首元素a[0][0]的指针,也就是说a[0]=&a[0][0]
输入5个学生,4门课成绩,二维数组stu[5][4]表示,行标表示学生,列标表示课程成绩,分别编写函数aver()、fals()和well()完成:(1)求第一门课的平均分;(2)统计有2门以上课程不及格的同学人数;(3)平均成绩在90分...
1.掌握函数的定义和使用方法;掌握函数调用的方法;掌握函数参数传递的机制;...2.熟练掌握一维数组和二维数组的定义、引用和初始化;掌握字符数组与字符串的关系以及字符串变量的表示,熟练字符串处理函数的应用。
数组(一维数组,二维数组)、 函数(函数定义,函数调用,值传递,函数的常见样式,函数的声明,函数的分文件编写) 指针(指针变量定义使用,指针的内存空间,空指针与野指针,const修饰指针,指针和数组,指针...
array()这个函数,这个函数中形式参数是char *array[]和代码中的char *test[]一样,同为字符指针,当你把参数传递过来的时候,事实上不是把数组内容传递过来,test的首地址传递了进来,由于array是指针,所以在内存中它在栈...
(31)二维数组应用实例(2) (32)用一维数组来存储字符串 (33)字符串的输入与输出 (34)字符串数组 (35)用于字符串处理的函数 (36)字符串应用实例 (37)传给Main函数的参数 (38)函数指针 (39)函数的递归调用 (40)变量作用...
python向c函数传递二维数组,一维数组,指针灯参数;python向c函数传递结构体指针,c函数向python返回结构体指针;python向c以参数形式传递回调函数,且c函数回调python回调函数;python向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字符串和字符串...
6.2.2怎样引用二维数组的元素 6.2.3二维数组的初始化 6.2.4二维数组程序举例 6.3.字符数组 6.3.1怎样定义字符数组 6.3.2字符数组的初始化 6.3.3怎样引用字符数组中的元素 6.3.4字符串和字符串结束标志...