c语言 输出二维数组元素的函数

这是我写的,用的变长数组,编译时就出错。怎么办
#include <stdio.h>
#include <ctype.h>
#include <time.h>
#include <stdlib.h>
//#include <conio.h>
int output2dArr(int rows,int cols ,int arr[rows][cols]);
int main(void)
{

int num_male ,num_female;
int property_male,property_female ;
int i,j;
num_male = 150 ;
num_female = 150;
property_male = 9;
property_female = 10;

int male[num_male][property_male] ;
int female[num_female][property_female];

output2dArr(num_male,property_male,male);
return 0;
}

int output2dArr(int rows,int cols,int arr[rows][cols])
{
for (int i=0;i < rows;++i)
{
for (int j=0;j < cols;++j)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}

int output2dArr(int rows,int cols ,int arr[rows][cols]);你这个函数定义就有问题。因为定义数组时必须定义数组的大小。你可以这样写int output2dArr(int rows,int cols ,int arr[ ][ ]);

还有你没有理解数组,定义数组的时候就需要为数组开辟一块空间,这个空间开辟后就不能再增加了。还有c语言不同于c++。c语言的定义是必须放在最前面的,而c++只需要先定义再使用就可以了。你把数组的大小改为定值就可以了。必须是常数
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-29
赋值应该在所有定义之后,

int male[num_male][property_male] ;
int female[num_female][property_female];
num_male = 150 ;
num_female = 150;
property_male = 9;
property_female = 10;
可以把定义提前,或者在定义的时候初始化。
第2个回答  2013-07-29
int rows,int cols ,int arr[rows][cols] 标准C语言不支持这种变长数组!因此编译会报错!

因为(二维)数组的数据是连续存放的,因此,可以通过传递数组首地址和行列值,来实现参数传递,但引用时,就不能按数组方式来引用了,只能用指针方式,以下修改,仅供参考:
#define num_male 150
#define num_female 150
#define property_male 9
#define property_female 10
//将以上数据定义成宏
int output2dArr(int rows,int cols ,void *arr );
int main(void)
{
int male[num_male][property_male] ;
int female[num_female][property_female];
//这里需要添加数组数据输入

output2dArr(num_male,property_male,male);
return 0;
}

int output2dArr(int rows,int cols,void * arr )
{
int *p=(int *)arr ;
for (int i=0;i < rows;++i)
{
for (int j=0;j < cols;++j)
{
printf("%d ", *(i*col+j) );
}
printf("\n");
}
return 0;
}本回答被提问者采纳
第3个回答  2015-05-16
因为(二维)数组的数据是连续存放的,因此,可以通过传递数组首地址和行列值,来实现参数传递,但引用时,就不能按数组方式来引用了,只能用指针方式,以下修改,仅供参考:
#define num_male 150
#define num_female 150
#define property_male 9
#define property_female 10
//将以上数据定义成宏
int output2dArr(int rows,int cols ,void *arr );
int main(void)
{
int male[num_male][property_male] ;
int female[num_female][property_female];
//这里需要添加数组数据输入

output2dArr(num_male,property_male,male);
return 0;
}

int output2dArr(int rows,int cols,void * arr )
{
int *p=(int *)arr ;
for (int i=0;i < rows;++i)
{
for (int j=0;j < cols;++j)
{
printf("%d ", *(i*col+j) );
}
printf("\n");
}
return 0;
}
第4个回答  2013-07-29
数组没有初始化怎么输出?
相似回答