C++语言:函数用二维数组作参数,调用该函数时该如何写实参??

函数声明时:
void exchange(int **pData,int firstlen,int secondlen)
然后在main()函数中调用时该怎样写??
我写的是exchange(p,flenth,slenth);其中p是二维数组名。
然后编译错误了......
定义二维数组作函数参数时能不给长度吗???我是说所有长度都不给出。

多维数组作参数时,只有第一维长度可以省略,否则无法确定传入参数的类型。
具体理由可以参考这里:http://zhidao.baidu.com/question/148239360.html
如果要使用“真正的”多维数组,需要自行定义动态数组结构体,
例如:
typedef struct vector_
{
int* ptr;
int length;
} vector;
typedef struct vector2_
{
vector* ptr;
int length;
} vector2;
使用前再分配空间和进行赋值,然后传递vector2类型的指针即可。
====
[原创回答团]

参考资料:原创

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-02
*p
你用的是指向指针的指针

C++中二维数组在函数中传递时形参和实参应该怎么写
使用指向 数组 的 指针 ,实参直接用数组名。样例代码:\/* 注意列数必须要给出来,因为 程序 要计算(a+1)的位置就必须知道列数 *\/ int foo1(int (*a)[10]) {return a[1][0];} \/* 形参 本质 上仍是指向数组的指针,只是写成了数组的 形式 \/ int foo2(int a[10][10]) {return a...

c语言c++语言如何用二维数组做形参?
C\/C++中,二维数组的第一维的每一个元素都是一维数组。所以,用指向一维数组的指针或用第一维维数空缺的二维数组作为函数的形式参数都能达到目的。设处理数组为int型,举例代码如下:\/\/#include "stdafx.h"\/\/If the vc++6.0, with this line.#include "stdio.h"void myprint(int (*p)[5]){...

C++函数调用二维数组
aa[i] = new char [n];这样给函数传递参数function((char**)array),但这样在实际的函数调用是,我们就要进行强制转换才可以用;在函数调用时,要把数组形式写成指针形式如*((int*)array + n*i + j);直接写char array[i][j]会导致错误,编译可以通过,在VC编译器中执行会出现异常...

C++中二维数组作为参数传递到一个函数
方法1、 第一维的长度可以不指定;但必须指定第二维的长度。include <stdio.h> void print_a(int a[][5], int n, int m){ int i, j;for(i = 0; i < n; i++){ for(j = 0; j < m; j++)printf("%d ", a[i][j]);printf("\\n");} } 方法2、指向一个有5个元素一...

c++中希望用数组作为函数的引用参数的代码该怎么写
你可以把这个地址作为函数的参数传递进去就可以了。举例如下:int a[3]={1,2,3};int avg(int* a,int k){ int sum = 0;for(int i=0;i<k;i++) sum += a[i];return sum;} 二维数组的也是传地址作为参数,只是在调用的时候以“数组名+行序”这样的形式来调用。

c#调用C++写的DLL,DLL中的接口参数有二维数组(如:foat**),在c#中...
这个问题 我可以非常明确地告诉你,C#无法直接调用这种参数的函数,C#中你描述的那种二维数组,本质上跟一维数组一致。倒是single[][]跟float**是类似的,但是也不能直接传递。然后具体说说 float* arr arr为指向float型的指针 single[] arr arr为single型数组的引用,当传递给API时,会自动传递...

C++函数返回二维数组在main函数怎么接收使用? 函数代码:
double** result = multiply(参数); 应该就可以了 希望对你有帮助。

函数定义时的参数为?函数调用语句中的参数称为?
函数调用语句中的参数称为:实参 实现函数时,如果有参数,则要写明参数:int plus(int a,int b){ return (a+b);} void fun(void){ } 但要注意,此时的参数名是“形参”,名字可以随便起,与调用时不必一样,但类型要一样!个数也应该相同。还有各个类型的排列顺序也要一致!例如声明时:int...

“在调用方法时,若要使方法改变实参的值”这句话什么意思
在调用函数时,会给参数赋一个临时名称用于函数内部,这个名称(参数名)叫做形参,实际传入方法的参数,叫实参。例如方法 echo(Point p)其中的p就是一个形参,在方法echo中可以使用标识p来引用。而调用该方法时,需要一个外部变量,如下 Point x= new Point(1,2);\/\/Point类只是一个例子,换成其他...

C语言中的二维数组的赋值,输入输出怎么用
代码,实现先输入二维数组的行数m和列数n,并再输入m*n个整型数据存到动态二维数组中。最后输出所有二维数组的元素值。int main(){ int**p;\/\/定义二维指针。int m,n;\/\/行数和列数。int i,j;scanf("%d%d",&m,&n);\/\/输入行数和列数。if(m<=0||n<=0)return-1;\/\/行数或列数非法...

相似回答