【发布时间】:2013-05-22 11:33:24
【问题描述】:
我的模块尝试按照以下程序进行操作:子函数尝试修改结构的元素并将其返回给通过引用传递结构的函数。
#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";
}
我希望 main 函数在结构 (729) 中包含修改后的整数值,以及向量值 (100,10000,1024 和 3452)。相反,main 没有这些值,并且在 g++ 上,程序显示出一种奇怪的行为:main() 显示结构体内部的向量中有 4 个元素,但是在尝试打印值时,出现段错误。
经过深思熟虑,我认为我的问题是:“结构的结构成员是否通过引用传递,仅通过值传递?”我不应该期望该向量具有由通过引用传递整个结构的函数设置的值吗?请帮忙。
维杰
【问题讨论】:
-
您似乎将“结构”视为仍在编写 C。停止到处写
struct;a本身就是一个类型。
标签: c++