C语言问题:动态分配二维数组导入函数问题

已经动态分配好一个二维数组,并且键盘敲入其长和宽,对数组做好初始化,请问怎么把这个二维数组导入函数,函数定义的形仓应该怎么写?

第1个回答  2013-05-14
假设定义一个整型二维数组(M*N):int (*p)[N] = new int[M][N];
作为函数形参的形式为:TYPENAME func(int p[][N], int size)//size = M
在函数定义中就像使用二维数组一样使用p。
第2个回答  2013-05-14

直接传递呗,下面的你试试看,大概一个意思

#include <stdio.h>
#include <stdlib.h>
void display(char *strs[])
{
    int i,j;
    for (i=0;strs[i]!=NULL;i++)
    {
        printf("%s\n",strs[i]);
    }
}
void main ()
{
    char *strs[] = ;
    display(strs);
}

第3个回答  2013-05-14
我想知道你这个2维数组的用途?

尽可能用一维数组。因为一维数组的内存是连续的,容易处理。
在图像或视频处理领域,一般都是用一维数组来处理像素点。

比如图像的宽为width, 高为height,那么可以用buf[width * height]来存储。
用坐标(x, y)表示图像上某一点,那么它对应的一维数组索引为 width * y + x,即buf[width * y + x]

比二维数组方便得多。本回答被网友采纳
第4个回答  2013-05-14
用双重指针。
void fun(int **array)追问

a=(int **)malloc(n*sizeof(int *));
for(i=0;i<m;i++)
{
a[i]=(int *)malloc(sizeof(*a));}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
a[i][j]=0;}
;
}
比如这个,下面引用函数,是写
fun(**a)吗?
是不是对函数定义是的形仓写作void fun(int** a){....}
那在main里对函数导入这个数组时fun()括号里应该怎么写?

追答

你不能这么分配二维数组,二维数组要求所有空间都是连续的,所以在分配内存的时候应该这样:

a=(int **)malloc(n*m*sizeof(int));
引用函数写fun(a)就可以了。

追问

恩 ,我知道了。可是按照你的分配方法好像不行的

追答

你按这种分配方法遇到什么问题呢?

本回答被提问者采纳
第5个回答  2013-05-14
int fun(void array[][])
void main()
{
int arr[3][3];
fun(arr);
}
相似回答