文章目录
- 1.方法一:传递结构体地址
- 2.方法二:传递结构体
传递结构体,实现结构体内部变量的相加。可以明白在结构体中,什么时候访问成员变量用".“什么时候用”->"。
1.方法一:传递结构体地址
#include <>
//定义结构体
struct bank{
double income1;
double income2;
};
//定义相加函数,形参为一个指针
double sum(struct bank *money)
{
return(money->income1 + money->income2);
}
int main(void)
{
//结构体初始化
struct bank zhangsan = {
100.34,
200.11
};
printf("zhangsan totally have %f \n", sum(&zhangsan));
}
打印结果:
zhangsan totally have 300.450000
解析:
sum()函数使用指向结构体bank的指针money作为参数,在主函数中使用sum(&zhangsan)将zhangsan的地址传给sum()函数。然后通过"->"运算符获取zhangsan.income1和zhangsan.income2的值。
注意:和数组名不同,数组名就是数组的首地址,而结构体名只是其地址的别名,必须使用&取地址运算符才能获取结构体的地址。
2.方法二:传递结构体
#include <>
//定义结构体
struct bank{
double income1;
double income2;
};
//定义相加函数,形参为一个结构体
double sum(struct bank money)
{
return(money.income1 + money.income2);
}
int main(void)
{
//结构体初始化
struct bank zhangsan = {
100.34,
200.11
};
printf("zhangsan totally have %f \n", sum(zhangsan));
}
打印结果:
zhangsan totally have 300.450000
解析:
本方法是最常见的方法。调用sum()函数时,编译器根据bank模板创建了一个名为money的自动结构变量。然后,该结构被初始化为zhangsan。访问结构体变量使用".“,当money是指针时才用”->"。