C++语言程序设计

结构作为函数参数传递的情况有两种，即传递结构的成员和传递整个结构。实际上，两种传递的参数都可以被看作是内置数据类型的变量或数组。对于结构的成员作为参数传递的情况例8-2没有用到，下面再举一简单的例子说明：
double addsalary(double x)
{
x=x+x*0.05;
return x;
}
main()
{
……
first_employee.salary=addsalary(first_employee.salary);
……
}
还是利用例8-2，程序其余部分相同，只是先定义函数addsalary()，然后在主函数内调用函数addsalary()，以结构变量first_employee的成员salary作为实参。我们可以看到：由于成员salary是double型的，对它的使用与对其它double型的变量的使用是一样的。
对于整个结构作为函数参数的情形，例8-2给出了很清楚的示例。我们可以看到：在主函数中分别调用了子函数input_details()和display()，都是以整个结构变量first_employee作为参数传递的。细心的读者可能会发现，两个函数虽然都是以整个结构变量为参数，但是传递的方式不同。前者input_details()是以引用的形式传递结构变量this_employee的（即&this_employee），后者display()是传值的方式传递结构变量this_employee的。两种传递方式根本的不同在于：前一种方式可能会改变实参结构变量的数据，后一种对结构变量的使用，不影响实参结构变量的值。
有关用结构作为参数传递的时候，到底是采用引用方式还是传值方式，右边给出了一些基本规则。