我在计算机科学课上有一个作业,我正在编写一个需要返回多个数组的程序。从技术上讲,我可以做得很好,但是设置任务的方式使我很难衡量某些事情。
基本上,我必须在main()
函数中声明两个数组和一个变量,并将它们发送到一个名为input()
的函数。
Input()
将采用NumberOfYears
,Year[NumberOfYears]
,DataForYear[NumberOfYears]
这三项内容。 NumberOfYears
将使用scanf()
进行for()
,这将确定scanf()
循环运行的次数,Year[]
用于DataForYear[]
和{{1} }}。 Year[]
和DataForYear[]
必须使用相同的scanf()
语句,我知道该怎么做。
完成所有这些后,我需要创建一个名为output()
的函数,该函数基本上printf()
用户刚给我的所有值(Year[]
和DataForYear[]
})。但是,我需要一种方法将两个数组都返回到main函数,以及NumberOfYears
。我听说这可以使用一种叫做结构的东西来完成,但是我们还没有学到这一点,我相信我的导师不会批准。
教师的笔记建议只应将NumberOfYears
返回到主函数,但我根本看不出这是怎么回事。如果你有办法将这些东西传递给output()
而不必归还它们,那就太好了。否则,我只需要某种方式来做到这一点,其余的程序就是历史。
答案 0 :(得分:1)
函数可以通过参数返回以及返回:
int doMyThing( int *somethingElse ) {
*somethingElse = 40;
return 2;
}
int main( void ) {
int a;
int b = doMyThing( &a );
printf( stdout, "%d\n", a + b ); // prints "42"
}
您可以使用int **somethingElse
或任何您需要的内容将其扩展到数组。
答案 1 :(得分:0)
在C中,无论何时传递'数组',实际上都会传递一个指针。因此,您的返回类型可能类似int*
,具体取决于您需要传回的数组类型。如有必要,您可以使用&x
获取变量x
的地址(例如数组的第一个元素)。
另一种可能性是,因为你传递一个指针,你甚至不需要实际返回它。您可以在input
函数中修改数组,然后在main
中看到它已更改,而无需做更多工作。