0

我知道要修改另一个函数中的数组,我需要将参数声明为函数定义中的引用:

bool sortInput(ifstream &infile, StudentType (&students)[MAXSIZE], int size)

我同样声明了原型,因为否则它不会正确编译:

bool sortInput(ifstream &, StudentType (&students)[MAXSIZE], int);

然而,这似乎并没有真正将数组作为参考传递。我调用了一个不同的函数,它没有看到任何变化(它所做的只是打印数组,但它什么也没打印)。我知道数组已被修改,因为在原始函数中打印它会显示所有更改,它们似乎并没有延续到全局数组变量并保持在修改它的函数的范围内,尽管是作为参考传递。

我已经阅读了无数其他线程和谷歌搜索,所以我相当确定函数定义是正确的,但是它没有说明原型的正确形式。

4

2 回答 2

1

数组已作为指针传递,因此您已经可以修改其内容。&不需要添加。

于 2013-10-07T00:07:36.770 回答
1

您不必通过引用传递数组,因为它作为指针传递。通过大小。在您的排序函数中,可变大小的副本被修改,但在您的主函数中,它始终为零。

于 2013-10-07T00:08:37.267 回答