1

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

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

Input()会取这三样东西,分别是NumberOfYears, Year[NumberOfYears], DataForYear[NumberOfYears]. NumberOfYears将使用 a ,scanf()这将确定循环运行多少次for()将使用 ascanf()和。并且必须使用相同的语句,我知道该怎么做。Year[]DataForYear[]Year[]DataForYear[]scanf()

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

讲师的笔记建议只NumberOfYears应该返回到主函数,但我根本不明白这是怎么可能的。如果您有办法让我可以将这些东西传递给output()而不必归还它们,那就太好了。否则,我只需要某种方式来做到这一点,剩下的程序就是历史了。

4

2 回答 2

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您可以使用, 或任何您需要的东西将其扩展到数组。

于 2013-03-06T01:04:36.473 回答
0

在 C 语言中,只要传递一个“数组”,实际上就是传递一个指针。因此,您的返回类型可能类似于int*,具体取决于您需要传回的数组的类型。如有必要,您可以使用&x来获取变量的地址x(例如数组的第一个元素)。

另一种可能性是,由于您正在传递一个指针,您甚至不需要实际返回它。您可以在函数内修改您的数组input,然后在main不做更多工作的情况下查看它的更改。

于 2013-03-06T01:02:44.497 回答