在给结构体成员赋值的时候,函数参数只能使用指针么?

我尝试不用指针,用结构类型变量作为函数参数,就是修改的图中的fill函数的参数,结果报错说 主函数定义的结构体变量(即c)未初始化图片图片

#include #include using namespace std;const int seasons = 4;const char* sname[seasons] = {"Spring","Summer","Fall","Winter"};struct cash{ double pa[seasons];};void fill(cash* a);void show(cash b);int main(){ cash c ; fill(&c); show(c); system("pause"); return 0;}void fill(cash* a){ for(int i=0;i> a->pa[i]; }}void show(cash b){ double total=0.0; cout << "\nEXPENSES\n"; for(int i=0;i < seasons;i++) { cout << sname[i] << ": $" << b.pa[i] << endl; total +=b.pa[i]; } cout << "Total Expenses: $" << total << endl;}

函数参数不用指针,那么修改结构体内容是修改的副本,函数返回后,还是原来的值

不用指针,你也可以用引用。

因为如果不用指针或者引用的话,你值传过去后只是把值传过去了,而实参是不会受影响的,当用了指针就是把地址传过去了,形参和实参就是一个东西了,改形参就是改实参。引用也差不多一个道理

考虑下引用&,不然就必须要指针了,呵呵呵

结构是值类型的,不能按引用传递