需要帮助返回/传递多个数组

时间:2013-03-06 01:00:24

标签: c arrays function

我在计算机科学课上有一个作业,我正在编写一个需要返回多个数组的程序。从技术上讲,我可以做得很好,但是设置任务的方式使我很难衡量某些事情。

基本上,我必须在main()函数中声明两个数组和一个变量,并将它们发送到一个名为input()的函数。

Input()将采用NumberOfYearsYear[NumberOfYears]DataForYear[NumberOfYears]这三项内容。 NumberOfYears将使用scanf()进行for(),这将确定scanf()循环运行的次数,Year[]用于DataForYear[]和{{1} }}。 Year[]DataForYear[]必须使用相同的scanf()语句,我知道该怎么做。

完成所有这些后,我需要创建一个名为output()的函数,该函数基本上printf()用户刚给我的所有值(Year[]DataForYear[] })。但是,我需要一种方法将两个数组都返回到main函数,以及NumberOfYears。我听说这可以使用一种叫做结构的东西来完成,但是我们还没有学到这一点,我相信我的导师不会批准。

教师的笔记建议只应将NumberOfYears返回到主函数,但我根本看不出这是怎么回事。如果你有办法将这些东西传递给output()而不必归还它们,那就太好了。否则,我只需要某种方式来做到这一点,其余的程序就是历史。

2 个答案:

答案 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中看到它已更改,而无需做更多工作。