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

作者: 遮天的龙 | 来源:发表于2016-06-02 13:41 被阅读397次

结构体与函数

一、结构体作为函数的参数

【一】、传值调用方式
在函数之间直接传递结构体类型的数据——传值调用方式。
当结构体作参数或返回值时,会发生同名复制。
而且同类型结构体间,是可以相互赋值的。在具体应用中,把函数的形参定义为结构体变量,函数调用时,将主调函数的实参传递给被调函数的形参。
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

相关文章

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

    结构体与函数 一、结构体作为函数的参数 【一】、传值调用方式在函数之间直接传递结构体类型的数据——传值调用方式。当...

  • C语言和OC的结构体(struct)

    Struct(结构体) 1.结构体定义 2.结构体变量 3.结构体数组 4.C语言结构体指针 5.C语言共用体 6...

  • C语言的结构体(篇章之一)

    一、结构体的定义: 结构体类型是一种由用户根据实际需要自己构造的数据类型,必须要“先定义,后使用”。 二、结构体类...

  • C语言结构体用法很多,坑也很多

    C语言可谓是编程界的传奇语言,历经几 十 年,依然排名前列。 本文主要说的是C语言中的结构体,结构体是C语言中重要...

  • 12-Go语言结构体

    结构体 结构体的基本概念 什么是结构体Go语言中的结构体几乎和C语言中的结构体一模一样都需要先定义结构体类型, 再...

  • C语言学习笔记-结构体占用内存大小的计算

    引言 结构体在C语言中虽然经常使用,但是怎么计算一个结构体占用多大的内存,很多C语言的新手都没注意过,其实C语言的...

  • C语言结构体

    结构体 本文介绍C语言结构体,struct 在C++中功能相对C较多,相当于类,这里暂时不讨论,本文单独讨论C语言...

  • c语言中的结构体

    结构体是 C 语言主要的自定义类型方案,这篇就来认识一下结构体。 一、结构体的形态 C源程序(struct.c):...

  • 闲聊C语言结构体

    结构体是 C 语言主要的自定义类型方案,这篇就来认识一下结构体。 一、结构体的形态 C源程序(struct.c):...

  • 结构体与指针

    1.1 Linux C语言结构体 简介:本课程深入的讲解了C语言中,预处理是怎么回事,结构体和公用体又是如何使用及...

网友评论

    本文标题:C语言的结构体(篇章之二)

    本文链接:https://www.haomeiwen.com/subject/btohdttx.html