我想通过引用将数组元素替换为其他值。但这样做时我遇到了问题。我的代码如下。在下面的代码中,我只通过引用传递了最后一个值10。但我希望得到像6,7,8,9,10这样的改变值。请建议:
#include <iostream>
using namespace std;
int temp=6;
int byreference (int *x){
for (int t=0;t<5;t++){
*x=temp+t;
}
}
int main ()
{
int array[5];
for (int s=0;s<5;s++){
array[s]=s+1;
byreference(&array[s]);
cout<<*&array[s]<<endl;
}
}
答案 0 :(得分:1)
如果您打算使用c++
:
#include <vector>
#include <iostream>
using namespace std;
const int temp=6;
int byreference (std::vector<int> &x){
for (int t = 0; t<x.size(); t++){
x[t] = temp + t;
}
}
int main ()
{
std::vector<int> array(5, 0);
for (int s = 0; s < array.size(); s++) {
array[s]=s+1;
byreference(array);
cout << array[s] << endl;
}
}
输出:
6
7
8
9
10
这样可以避免运行阵列末端等问题。
答案 1 :(得分:1)
没有矢量:
#include <iostream>
using namespace std;
int temp=6;
int byreference (int *x){
for (int t=0;t<5;t++){
*(x+t)=temp+t;
}
}
int main ()
{
int array[5];
for (int s=0;s<5;s++){
array[s]=s+1;
byreference (array);
cout<<array[s]<<endl;
}
}
输出:
6
7
8
9
10
答案 2 :(得分:0)
这一行
*x=temp+t;
确保array
中的所有值都设置为10
。
为什么?
temp
设置为6
,并且未在程序中更改。
在循环中,
for (int t=0;t<5;t++)
{
*x=temp+t;
}
*x
正在设置并重置,直到t=4
。然后停止。当时*x = 6+4 = 10
。
如果您希望数组包含6, 7, 8, ...
,则可以将byreference
更改为:
void byreference (int *x)
{
*x += temp-1;
}