平房区地图:一个C语言问题!

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 06:48:50
在main函数中,调用了三个子函数:
main()
{
int input();
int arith(int i);
void output(int result[]);
}
input函数返回了一个整型的数i(i的数值取决于input函数中从用户得到的输入内容),在arith函数中需要定义一个长度为i的数组,所以可以把input返回的i作为参数传递给arith函数:
main()
{
...
int num;

num=input();
arith(num);
...
}
但是arith函数的返回值是一个长度同样为i的数组,现在我不知道怎么把这个返回的数组传递给output输出:
main()
{
...
int num;
int result[]; //这个地方怎么声明?

num=input();
result[]=arith(num);
output(result[]);
...
}
或者用其他什么办法可以解决这个问题呢?

#include "stdio.h"

int input()
{
int nSize;
scanf("%d",&nSize);
return nSize;
}

int *arith(int nSize)
{
int *p;
p = (int*)malloc(nSize*sizeof(int));
for(int i = 0;i<nSize;i++)
{
scanf("%d",&p[i]);
}
return p;
}

void output(int *p,int nSize)
{
for(int i = 0;i<nSize;i++)
{
printf("%d\n",p[i]);
}
free(p);
}
void main()
{
int nSize;
nSize = input();
int *p;
p = arith(nSize);

printf("\n\n");

output(p,nSize);
}

我的意见也是返回指针,不用全局变量。没有更多的新东西,只是把它实现并调试通过而已。调试环境是lcc-win32 v4.0

用指针啊`~用数组容易出错,用指针只有返回一个值就可以把整个数组中的数返回~~!

main()
{
...
int num;
int *result; //这个地方用指针来操作。
num=input();
result=arith(num);
output(result[]);
...
}
在arith函数中可以这样操作:
int * arith(int num)
{int *p;
p=(int *)malloc(sizeof(int)*num);//这样即可把p当做是一个数组来操作了。
...
return p;}

如果你不想对数组进行修改还可以 void output(const int *result)

呵呵!!
定义一个基类型相同的指针!就OK啦!!!!!

大家都辛苦了!