c++怎么将主函数动态申请的二维数组传给子函数?

/第一个矩阵动态申请
b=new int*[a];
for(i=0;i<a;i++)
b[i]=new int[a];
//输入第一个数组
cout<<"第一个矩阵:";
for(i=0;i<a;i++)
{
for(j=0;j<a;j++)
cin>>b[i][j];
我要将这个数组传递给
sun();
函数怎么传递?
请指教!

第1个回答  推荐于2016-02-20
void fun(int **b, int a)
{
int i,j;
for (j=0;j<a;j++)
for (i=0;i<a;i++)
cout << b[j][i] << ' ';
}
main()
{
int **b;
int i,j;
int a=2;
b=new int*[a];
for(i=0;i<a;i++)
b[i]=new int[a];
// for (j=0;j<a;j++) for (i=0;i<a;i++) b[j][i]=j*a+i; 输入或赋值
fun(b,a);
}本回答被提问者采纳
第2个回答  2011-07-07
c语言里本质上说,任何传递都是传值(忘记谭浩强C吧。。), 你传一个在子函数申请 却偏偏要主函数先运行 让未动态申请的二维数组当参数来用

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++里面的copy函数,如何将一个二维数组S1复制到S2去
void main(){int s1[MAX_ROW][MAX_COL],s2[MAX_ROW][MAX_COL];int i,*p;p=(int *)s1;for(i=0;i<MAX_COL*MAX_ROW;i++)*p++=rand();print((int *)s1,MAX_ROW,MAX_COL);copy((int *)s2,(int *)s1,MAX_ROW*MAX_COL);print((int *)s2,MAX_ROW,MAX_COL);} xoaxa兄...

...有二维数组(如:foat**),在c#中如何将二维数组(single[,])传入...
综上所述,C#不能直接调用Test(float** arr,int rows,int cols),你必须使用非安全代码构造一个single*[],然后将这个数组传递过去。下面是一个例子 [DllImport("test.dll")]static extern unsafe bool Test(float*[] arr, int row, int col);\/\/这里arr要声明为float*[],使用起来比较方便 bool...

...二维数组(如:char**),在c#中如何将二维数组传入?
我没有发现有什么问题,使用[DllImpor[("你需要引用的DLL")] private static extern 返回类型 需要引用的接口函数(你要用到的数组)。既然是C++写的DLL,那么应该有针对这个数组的方法的,就象C#中的get和set。它与C#这种不同的,即使它在DLL中被声明成全局参数也不无法在C#中直接被导入引用的。

C++字符串小问题,请大家帮个忙,很简单
这个是要把数组传递给子函数操作,实际上只能传递的是该数组的指针,也就是子函数的数组指针指向的内容和主函数的是同一个,在子函数里修改其内容就是更改主函数里数组的内容。把形参设置成const,子函数就无权中修改其内容,保护了数据的安全性。所以在写传给子函数指针型数据时,如果不想(或不能)...

C++函数调用二维数组
for ( int i=0;i <n;i++ )aa[i] = new char [n];这样给函数传递参数function((char**)array),但这样在实际的函数调用是,我们就要进行强制转换才可以用;在函数调用时,要把数组形式写成指针形式如*((int*)array + n*i + j);直接写char array[i][j]会导致...

C语言如何在子函数中对主函数中的二维数组值进行修改? 二维数组已经在...
我给子函数传了数组的首地址,然后在子函数中用一维数组的形式赋值(我主要是想赋值),但是在主函数中调用数组时值不对,也就是说值并没有被修改,不是说二维数组在内存中也是按列排列的么?难道在子函数中这个列就不管用了? 追答 如果用二维数组,以上用指针实现的过程中把维数设成变量就可以了,但是这样初始化时...

C++ 如何给double型二维数组动态初始化
double **array;array = new double*[row];for (int i = 0; i < row; ++i){ array[i] = new double[col];} 其中row为行数,col为列数

C++通过动态内存分配来来生成一个动态的二维数组,要求行列相乘为偶数...
include "stdio.h"#include <stdlib.h>#include "time.h"int main(int argc,char *argv[]){int m,n,i,j,**p,*q;srand((unsigned)time(NULL));m=rand()%10+1;while(m*(n=rand()%10+1)&1);\/\/保证m*n是偶数q=(int *)malloc(sizeof(int)*m*n);if(q==NULL || (p=(int...

c++中的new()申请二维数组
int *x = new[x][y] 是一个编译错误。 左右类型不匹配的。分配二维数组如下:int **a = new int*[10]; \/\/第一维,for( int i=0; i<10; i++){ a[i] = new int[10]; \/\/分配第二维,每一行的空间。}

相似回答
大家正在搜