前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >结构体类型数据在函数之间的传递

结构体类型数据在函数之间的传递

作者头像
pigeon
发布2022-04-11 19:49:09
2K0
发布2022-04-11 19:49:09
举报
文章被收录于专栏:电子荣耀电子荣耀

结构体类型数据在函数之间的传递

函数之间不仅可以使用基本数据类型及其数组参数进行数据传递,也可以使用结构体类

型及其数组参数进行数据传递,传递方式与基本数据类型参数是相同的。

结构体变量在函数之间传递数据

使用结构体类型的変量作为参数进行函数之间的数据传递时,注意以下问题

(1)主调函数的实参和被调函数的形参是相同结构体类型声明的变量。

(2)实参结构体变量向形参结构体变量传值时,依然是单向值传递,实参和形参变量分配

不同的内存空间,被调函数运行期间对形参结构体变量进行的修改不影响实参结构体变量。

(3)结构体变量也可以作为函数的返回值,使用 return语句从被调函数返回一个结构体变

量的值。

例:定义结构体类型表示圆,定义函数计算一个圆的面积并返回结构体变量。

代码语言:javascript
复制
#include<stdio.h>
#define PI 3.14159

struct circle
{
    int x;
    int y;
    double radius;
    double area;
};
struct circle getarea(struct circle c);
int main()
{
    struct circle c1={,,12.5,},c2;
    c2=getarea(c1);
    printf("c1:%d,%d,%.2f,%.2f\n",c1.x,c1.y,c1.radius,c1.area);
    printf("c2:%d,%d,%.2f,%.2f\n",c2.x,c2.y,c2.radius,c2.area);
    return ;
}
struct circle getarea(struct circle c)
{
    c.area=PI*c.radius*c.radius;
    return c;
}

程序运行结果:

运行结果分析:从程序的运行结果可以看出,main函数中的实参c1把它的值传递给函数getarea的形参c,函数运行过程中计算并修改了c的成员area的值。由于参数的单向传递,形参c的变化没有影响实参c1。函数 getarea把形参c的值作为返回值,main函数中把返回值赋给了变量c2。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子荣耀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档