C/C++两种传递结构体的方法(传递地址“->“和传递结构体“.“)

时间:2025-03-15 08:07:45

文章目录

  • 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是指针时才用”->"。

相关文章