C 结构体和函数

C 结构体和函数

在本教程中,您将学习将结构变量作为参数传递给函数。您将学习借助示例从函数返回struct的方法。

与内置类型的变量类似,您也可以将结构变量传递给函数。

将结构传递给函数

示例

#include <stdio.h>
struct student {char name[50];int age;
};//函数原型
void display(struct student s);int main() {struct student s1;printf("输入姓名: ");//读取用户输入的字符串,直到输入\ n// \ n被丢弃scanf("%[^\n]%*c", s1.name);printf("输入年龄: ");scanf("%d", &s1.age);display(s1); //将struct作为参数传递return 0;
}void display(struct student s) {printf("\n显示信息\n");printf("姓名: %s", s.name);printf("\n年龄: %d", s.age);
}

输出结果

输入姓名: Bond
输入年龄: 13显示信息
姓名: Bond
年龄: 13

在这里,创建了struct student类型的struct变量s1。 使用display(s1)将变量传递给display()函数声明。

从函数返回结构

这是从函数返回结构的方法:

示例

#include <stdio.h>
struct student
{char name[50];int age;
};//函数原型
struct student getInformation();int main()
{struct student s;s = getInformation();printf("\n显示信息\n");printf("Name: %s", s.name);printf("\nRoll: %d", s.age);return 0;
}
struct student getInformation() 
{struct student s1;printf("输入姓名: ");scanf ("%[^\n]%*c", s1.name);printf("输入年龄: ");scanf("%d", &s1.age);return s1;
}	

在这里,使用s = getInformation()来调用getInformation()函数声明。 该函数返回struct学生类型的结构。 在main()函数中显示返回的结构。

注意,getInformation()的返回类型也是struct student。

通过引用传递结构

示例

#include <stdio.h>
typedef struct Complex
{float real;float imag;
} complex;void addNumbers(complex c1, complex c2, complex *result);int main()
{complex c1, c2, result;printf("输入第一个数:\n");printf("输入实部: ");scanf("%f", &c1.real);printf("输入虚部: ");scanf("%f", &c1.imag);printf("输入第二个数: \n");printf("输入实部: ");scanf("%f", &c2.real);printf("输入虚部: ");scanf("%f", &c2.imag);addNumbers(c1, c2, &result);printf("\nresult.real = %.1f\n", result.real);printf("result.imag = %.1f", result.imag);return 0;
}
void addNumbers(complex c1, complex c2, complex *result)
{result->real = c1.real + c2.real;result->imag = c1.imag + c2.imag;
}

输出结果

输入第一个数:
输入实部: 5.8
输入虚部: -3.4
输入第二个数:
输入实部: 9.9
输入虚部: -4.5result.real = 15.7
result.imag = -7.9

在上面的程序中,三个结构变量c1,c2和结果的地址传递给addNumbers()函数。 在这里,结果通过引用传递。

当addNumbers()内部的结果变量被更改时,main()函数内部的结果变量也被相应地更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/154619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode算法之分治-归并

目录 1.排序数组2.数组中的逆序对3.计算右侧小于当前元素的个数4.翻转对 1.排序数组 排序数组 //分治-归并 class Solution {int tmp[50010]; public:vector<int> sortArray(vector<int>& nums) {mergeSort(nums,0,nums.size()-1);return nums;}void mergeS…

源启容器平台KubeGien 打造云原生转型的破浪之舰

云原生是应用上云的标准路径&#xff0c;也是未来发展大的趋势。如何将业务平滑过渡到云上&#xff1f;怎样应对上云期间的各项挑战呢&#xff1f;中电金信基于金融级数字底座“源启”打造了一款非常稳定可靠、多云异构、安全可控、开放灵活的容器平台产品——源启容器平台Kube…

主播-产品痛点话术

—、用户体验差我们的产品在用户体验方面存在一些问题。首先&#xff0c;产品的操作流程不够顺畅&#xff0c;导致用户在使用过程中经常遇到困扰。另外&#xff0c;我们的产品界面设计不够美观&#xff0c;无法给用户带来愉悦的使用体验。针对这些问题&#xff0c;我们将对产品…

[SWPUCTF 2021 新生赛]fakerandom

分析代码 import random flag xxxxxxxxxxxxxxxxxxxx random.seed(1) l [] for i in range(4):l.append(random.getrandbits(8)) result[] for i in range(len(l)):random.seed(l[i])for n in range(5):result.append(ord(flag[i*5n])^random.getrandbits(8)) print(result) …

Linux ps -ef|grep去除 grep --color=auto信息

linux 监控 进程判断是否启动可通过该指令实现 ps -ef|grep java指令结果为 # -v 参数有过滤作用 ps -ef|grep java |grep -v grep

Unity 头顶图文字性能优化

如图&#xff1a;常规的排版&#xff0c;会有很多Batches。这是优化后的Batches只有3。 常用解决方案&#xff1a; 1、创建两个Canvas&#xff0c;一个放所有文本Text&#xff0c;一个放所有Image。但这里有会有两个问题&#xff1a;一旦文字夹在两个Image中间&#xff0c;还有…

外汇天眼:经济调控之术!升息如何化解通货膨胀的困扰?

为了遏制通货膨胀&#xff0c;美国在过去的一段时间一直持续进行升息。尽管通胀数据的降幅并不迅速&#xff0c;但至少上涨势头得到了抑制。那么&#xff0c;升息为何能够遏制通胀呢&#xff1f;本文将简要探讨这一问题。 通货膨胀的根本原因在于货币供应量过多&#xff0c;也就…

深度学习卫星遥感图像检测与识别 -opencv python 目标检测 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐…

每日一练 | 华为认证真题练习Day18

Day18 华为认证中级考试真题 1、PE设备上的配置如下所示&#xff0c;则对于该配置命令的描述&#xff0c;正确的是 A.对端的PE在AS 500内&#xff0c;于本端PE是EBGP邻居关系 B.PE与两个客户网络的CE设备相连&#xff0c;一个是设置为VPN1,另一个设置为VPN3 C.接入PE端的两…

中间件安全:Apache Tomcat 弱口令.(反弹 shell 拿到服务器的最高控制权.)

中间件安全&#xff1a;Apache Tomcat 弱口令. Tomcat 是 Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的 Jakarta 项目中的一个核心项目&#xff0c;由 Apache、Sun 和其他一些公司及个人共同开发而成。 通过弱口令登录后台&#xff0c;部署 war 包…

Python 简易 HTTP 服务器

Python 简易 HTTP 服务器&#xff08;http.server&#xff09; http.server 是 socketserver.TCPServer 的子类&#xff0c;它在 HTTP 套接字上创建和监听&#xff0c;并将请求分派给处理程序。 Python3 内置标准模块。 通过执行如下命令创建一个最简单的 HTTP 服务器&#x…

重生之我是一名程序员 34

哈喽啊大家晚上好&#xff01; 今天给大家带来的知识是——库函数qsort。首先&#xff0c;给大家介绍一下qsort函数&#xff0c; qsort函数是C标准库中的一种排序函数&#xff0c;用于对数组中的元素进行快速排序。它接受四个参数&#xff1a;待排序数组的基地址&#xff0c;数…

【Springboot】pom.xml中的<build>标签详解

默认值及其标签解释 <build><!-- 指定最终构建产物的名称, 例如生成的 JAR 文件的名称 --><finalName>${artifactId}-${version}</finalName><!-- 指定源代码文件的目录路径 --><sourceDirectory>src/main/java</sourceDirectory>&l…

区块链技术与应用 【全国职业院校技能大赛国赛题目解析】第五套智能合约安全漏洞测试

第五套题的智能合约安全漏洞测试题目 环境 : ubuntu20 Truffle v5.8.3 (core: 5.8.3) Ganache v7.8.0 Solidity v0.8.3 Node v18.16.0 Web3.js v1.8.2 前言 请在测试的时候开启ganache打开,并且在truffle的配置文件配好ganache,之前两个帖子忘说了/(ㄒoㄒ)/~~ truffle-con…

YOLO改进系列之注意力机制(GAM Attention模型介绍)

模型结构 为了提高计算机视觉任务的性能&#xff0c;人们研究了各种注意力机制。然而以往的方法忽略了保留通道和空间方面的信息以增强跨维度交互的重要性。因此&#xff0c;liu提出了一种通过减少信息弥散和放大全局交互表示来提高深度神经网络性能的全局注意力机制。作者的目…

一文讲解eBPF helper 函数的设计与实现

您是否想为内核添加一个新的 eBPF 辅助&#xff08;helper&#xff09;函数&#xff0c;但不知道从何入手&#xff1f;或者&#xff0c;您是否曾遇到过类似于 R2 typectx expectedfp, pkt, pkt_meta, map_value 的 eBPF verifier 报错&#xff1f;本文将从代码层面对 eBPF 辅助…

“一键导出,高效整理:将之前的部分记录导出!“

亲爱的朋友们&#xff0c;你们是否曾经为了导出之前的记录而感到烦恼&#xff1f;冗长的过程&#xff0c;无法精确控制的选项&#xff0c;实在让人感到心力交瘁。但现在&#xff0c;我们为你带来一种全新的解决方案&#xff0c;让你的工作更轻松&#xff0c;更高效&#xff01;…

c# 扩展类,扩展方法

/// <summary>/// 扩展方法/// 静态类里的静态方法&#xff0c;参数列表最前面加个this 要扩展到的类型/// 使用场景&#xff1a;在不不修改源代码的情况下为其他类型添加方法/// </summary>public class ExtendMethod{public void Show(){Calculate calculate ne…

功率放大器应用领域分享:微流控细胞分选在“软骨”芯片关节炎治疗研究中的应用

微流控技术是一种通过微小的通道和微型装置对流体进行精确操控和分析的技术&#xff0c;它是现代医学技术发展过程中的一种重要的生物医学工程技术&#xff0c;具有广泛的应用前景和重要性&#xff0c;它在高通量分析、个性化医疗、细胞筛选等方面有着巨大的潜力&#xff0c;Ai…

Sui生态多家协议上线流动质押,兼顾收益与灵活性

在Sui上&#xff0c;流动质押协议允许DeFi用户质押SUI&#xff0c;并获得可交易或用于其他DeFi活动的流动质押标记token。这一过程绕过了传统质押中验证节点锁定token的问题。用户可以通过Sui的权益证明机制&#xff08;PoS&#xff09;确保网络的安全&#xff0c;同时参与生态…