-2
这就是我所拥有的,它造成了一些非常奇怪的差异。函数更改变量,即使按值传递?
#include<iostream>
using namespace std;
void input_data(int data[], short size);
int main(){
short size;
int data[1000];
cout << "How many values would you like to store? ";
cin >> size;
while (size > 0){
cout << "Enter your " << size << " values:" << endl;
input_data(&data[1000], size);
cout << size << " values stored in array." << endl;
}
}
void input_data(int data[], short size)
{
int i;
for (i=0;i<size;i++){
cin >> data[i];
}
}
所以这个代码应该是相当直接的,但任何时候我进入比3 size
以外的值,该行cout << size << " values stored in array." << endl;
结束说:“存储在阵列0值。”
我不明白可能会如何更改size
的值,因为我是通过值传递的,而不是通过引用。
为什么会发生这种情况,更好的是,为什么它会与数字3一起工作?
想一想:'&data [1000]'。 – juanchopanza
'input_data(&data [1000],size);'我认为这不会影响你的想法。你应该更仔细地阅读你的书。 –
我只是通过引用传递数组,而不是'size',所以我不知道你在 – greatj0b