我的模块尝试按照以下程序进行操作:子函数尝试修改结构的元素并将其返回给通过引用传递结构的函数。
#include <iostream>
#include <vector>
using namespace std;
struct a
{
int val1;
vector<int> vec1;
};
struct a* foo();
void anotherfunc(struct a &input);
int main()
{
struct a *foo_out;
foo_out = foo();
cout<< "Foo out int val: "<< foo_out->val1<<"\n";
cout<< "Foo out vector size: "<< foo_out->vec1.size()<< "\n";
cout<< "Foo out vector value1: "<< foo_out->vec1.at(0)<< "\n";
cout<< "Foo out vector value2: "<< foo_out->vec1.at(1)<< "\n";
return 0;
}
struct a *foo()
{
struct a input;
input.val1=729;
anotherfunc(input);
return &input;
}
void anotherfunc(struct a &input)
{
input.vec1.push_back(100);
input.vec1.push_back(1000);
input.vec1.push_back(1024);
input.vec1.push_back(3452);
cout<< "Anotherfunc():input vector value1: "<< input.vec1.at(0)<< "\n";
cout<< "Anotherfunc():input vector value2: "<< input.vec1.at(1)<< "\n";
cout<< "Anotherfunc():input int val: "<< input.val1<< "\n";
}
我期望主函数包含结构(729)中修改后的整数值,以及向量值(100,10000,1024 和 3452)。相反,main 没有这些值,并且在 g++ 上,程序显示出一种奇怪的行为:main() 显示结构内部的向量中有 4 个元素,但是在尝试打印这些值时,出现了段错误。
经过一番思考,我假设我的问题是:“结构的结构成员是否通过引用传递,仅通过值传递?” 我不应该期望该向量具有由通过引用传递整个结构的函数设置的值吗?请帮忙。
维杰