C语言的结构体(篇章的二)

结构体与函数

如出一辙、结构体作为函数的参数

【一】、传值调用方式
在函数之间一直传送结构体类型的数量——传值调用方式。
当组织体作参数或回到值时,会生同名复制。
以与种结构体间,是好互相赋值的。在实际应用中,把函数的形参定义为结构体变量,函数调用时,将主调函数的实参传递让受调函数的形参。
eg:
【例题】利用结构体变量作函数的参数的传值调用方式来计量三角形的面积。
#include “math.h”
#include “stdio.h”
typedef struct triangle //定义结构体类型
{
float a,b,c;
} Area ;
//自定义函数
float area(Ara side1)
{
float l,s;
l=(side1.a+side1.b+side1.c)/2; //计算三角形的一半周长
s=sqrt(l(l-side1.a)(l-side1.b)*(l-side1.c)); //计算三角形的面积公式
return s; //返回三角形的面积s的价值到主调函数中
}
//程序入口
void main()
{
float s;
Area side;
printf(“输入三角形的3长边长:\n”);
scanf(“%f %f %f”,&side.a,&side.b,&side.c); //从键盘输入三角形的老三度长
s=area(side); //调用起定义函数
printf(“面积是: %f\n”,s);
}
【二】、传址调用方式
以函数之间传递结构体指针——传址调用方式
行使指向结构体类型的指针变量作为函数的参数,将主调函数的结构体变量的指针(实参)传递让于调函数的结构体指针(形参),利用作为形参的结构体指针来操作主调函数着之结构体变量及其成员,达到数传递的目的。
eg:
与方的题一样的尺度,利用结构体指针作参数求三角形的面积(写了中心的几句子)

float area(Area *p)
{
float l,s;
l=(p->a+p->b+p->c)/2;   //计算三角形的半周长
s=sqrt(l*(l-p->a)*(l-p->b)*(l-p->c));  //计算三角形的面积公式
return s;
}

仲、结构体作为函数的返回值

貌似景象下,一个函数只能有一个回到值。
但是要是函数确实用带回多单返回值的话语,可以利用全局变量或指针来展开缓解。在结构体中可当为调函数吃应用return语句以一个结构体类型的数额结果回到到主调函数中,从而获取多独返回值。

或者因求三角形的例子来引申吧。(还是单独写核心之片段语句)

 struct cir_area result;
 result.l=(a+b+c)/2;
 result.s=sqrt(result.l*(result.l-a)*(result.l-b)*(result.l-c));
 return result;  //返回了l和s