08:结构体

news2024/11/17 19:43:28

结构体

  • 1、为什么需要结构体
  • 2、如何定义结构体
  • 3、怎么使用结构体变量
    • 3.1、赋值和初始化
    • 3.2、结构体变量的输出

1、为什么需要结构体

为了表示一些复杂的事物,而普通的基本类型无法满足实际要求。什么叫结构体
把一些基本类型数据组合在一起形成的一个新的数据类型,这个叫做结构体(复合数据类型)。
列如:

#include <stdio.h>

struct Student//结构体,定义了一个Student的数据类型。由int,float,char类型组成
{
	int age;
	float score;
	char sex;
};//逗号不能省

int main (void)
{
	struct Student st = {15, 66.6, 'F'};//给Student类型命名。
	return 0;
}

在这里插入图片描述

2、如何定义结构体

第一种方式:如上面的例子
第二种方式:

#include <stdio.h>

struct Student
{
	int age;
	float score;
	char sex;
}st;//直接在这里定义数据类型的名字

int main (void)
{
	struct Student st = {15, 66.6, 'F'};
	return 0;
}

推荐使用第一种方式。

3、怎么使用结构体变量

3.1、赋值和初始化

赋值:

 第一种:struct Student st = {15, 66.6, 'F'};
 第二种:struct Student st;
         st.age = 15;
         st.score = 66.6;
         st.sex = 'F';

3.2、结构体变量的输出

第一种:

printf("%d,%f,%c\n",st.age,st.score,st.sex);

第二种:

struct Student* pst = &st;
printf("%d,%f,%c",pst->age,pst->score,pst->sex);

定义一个指针变量pst,用来存放Student数据类型的地址。
pst->age等价于(*pst).age ,也等价于st.age(pst所指向的那个结构体变量中的age这个成员)

代码

/*通过函数对结构体变量的输入和输出*/	
#include <stdio.h>
#include <string.h>//strcpy使用的声明

void StudentInput(struct Student* pstu);
void StudentOutput(struct Student st);

struct Student
{
	int age;
	float score;
	char name[100];
};

int main (void)
{
	struct Student st;
	StudentInput(&st);
	StudentOutput(st);
	return 0;
}

void StudentInput(struct Student* pstu)
{
	(*pstu).age = 16;
	pstu->score = 66.4f;
	strcpy(pstu->name,"李四");
	
}

void StudentOutput(struct Student st)
{
	printf("%d,%f,%s\n",st.age,st.score,st.name);
}

ok,学到这里,我们对C语言也算有了基本的了解。其中还有很多的小细节还需要不断的学习进行丰富

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

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

相关文章

Dns被莫名篡改的问题定位(笔记)

引言&#xff1a;最近发现用户的多台机器上出现了Dns被莫名修改的问题&#xff0c;从系统事件上看并未能正常确定到是那个具体软件所为&#xff0c;现在的需求就是确定和定位哪个软件具体所为。 解决思路&#xff1a; 首先到IPv4设置页面对Dns进行设置&#xff1a;通过ProcExp…

【MySQL备份】Percona XtraBackup基础篇

目录 1.关于Percona XtraBackup 2. Percona XtraBackup有哪些特点&#xff1f; 3.安装Percona XtraBackup 3.1.环境信息 3.2.安装步骤 4. xtrabackup内部流程图 5.Percona XtraBackup基础语法 5.1.全量备份 5.2.增量备份 5.2.1.基于全量备份的增量备份 5.2.2.基于前…

Java学习 (六) 面向对象--this、继承、方法重写、super

一、this 关键字 1、this 演示 vi Person.java public class Person {String name;int age;//显示声明构造器public Person(String s , int i){name s;age i;}public void setAge(int age){age age;}}vi PersonTest.java public class PersonTest {public static void m…

nextTick的应用和原理理解

一.代码的理解 <template><div id"app"><div></div><button click"fn" ref"box"> {{ name }}</button></div> </template><script> export default {data: function () {return {n…

【Linux】计算机网络基础:协议、分层结构与数据传输解析

文章目录 前言1. 认识“协议”1.1. 什么是协议1.2. 网络分层结构——网络 vs OS之间的关系1.2.1. 软案分层1.2.2. 网络分层(为什么&#xff1f;是什么&#xff1f;怎么办&#xff1f;) 1.3. 站在语言角度&#xff0c;重新理解协议 2. 网络传输基本流程3. 数据包封装和分用4. 网…

【剑指Offer系列】68-二叉树的最近公共祖先(哈希)

思路&#xff1a;使用map存储每个节点的父节点&#xff0c;则两个节点的最近公共祖先&#xff0c;即二者的最近父节点 1、中序遍历二叉树&#xff08;当前节点的下一个节点&#xff09; 2、记录每个节点的父节点 3、列出p的族谱、q的族谱 4、寻找二者最近的祖先 class Soluti…

安装 Docker 环境(通过云平台创建一个实例实现)

目录 1. 删除原有 yum 2. 手动配置 yum 源 3. 删除防火墙规则 4. 保存防火墙配置 5. 修改系统内核。打开内核转发功能。 6. 安装 Docker 7. 设置本地镜像仓库 8.重启服务 1. 删除原有 yum rm -rfv /etc/yum.repos.d/* 2. 手动配置 yum 源 使用 centos7-1511.iso 和 Xi…

《Programming from the Ground Up》阅读笔记:p1-p18

《Programming from the Ground Up》学习第1天&#xff0c;p1-18总结&#xff0c;总计18页。 一、技术总结 1.fetch-execute cycle p9, The CPU reads in instructions from memory one at a time and executes them. This is known as the fetch-execute cycle。 2.genera…

安防监控视频平台LntonCVS视频融合共享平台水电站视频智能监控系统的设计与特点

水电站作为重要的能源基地&#xff0c;其安全运行对保障能源供应和社会稳定至关重要。然而&#xff0c;传统的人工监控方式存在高成本、监控范围有限和反应速度慢等问题。因此&#xff0c;引入先进的视频智能监控系统成为当务之急&#xff0c;以提高效率和安全性。 安徽羚通科技…

Anti-C-Myc Antibody (Chicken) - FITC Conjugated

C-myc基因是myc基因家族的重要成员之一&#xff0c;是一种可使细胞无限增殖&#xff0c;获永生化功能&#xff0c;促进细胞分裂的基因&#xff0c;c-myc基因与多种肿瘤发生发展有关。C-myc基因定位于染色体8q24、IgH、IgK、Igλ链的基因位点分别在14q32、2P13和 22q11&#xff…

SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution

CVPR2024 香港理工大学&OPPO&bytedancehttps://github.com/cswry/SeeSR?tabreadme-ov-file#-licensehttps://arxiv.org/pdf/2311.16518#page5.80 问题引入 因为有些LR退化情况比较严重&#xff0c;所以超分之后的结果会出现语义的不一致的情况&#xff0c;所以本文训…

模拟电子学基本概念+Keil5安装指南!!

2024-7-1&#xff0c;星期一&#xff0c;16:56&#xff0c;天气&#xff1a;阴转小雨&#xff0c;心情&#xff1a;晴。大家好啊&#xff0c;今天换了一个新的主题&#xff0c;为什么嘞&#xff0c;是因为截止到昨天&#xff0c;电路基础部分的内容已经暂时告一段落啦&#xff…

高斯过程的数学理解

目录 一、说明 二、初步&#xff1a;多元高斯分布 三、 线性回归模型与维度的诅咒 四、高斯过程的数学背景 五、高斯过程的应用&#xff1a;高斯过程回归 5.1 如何拟合和推理高斯过程模型 5.2 示例&#xff1a;一维数据的高斯过程模型 5.3 示例&#xff1a;多维数据的高斯过程模…

奔驰G350升级原厂自适应悬挂系统有哪些作用

奔驰 G350 升级自适应悬挂系统后&#xff0c;可根据行车路况自动调整悬架高度和弹性&#xff0c;从而提升驾乘的舒适性和稳定性。 这套系统的具体功能包括&#xff1a; • 多种模式选择&#xff1a;一般有舒适、弯道、运动及越野等模式。例如&#xff0c;弯道模式在过弯时能为…

自定义vue3 hooks

文章目录 hooks目录结构demo hooks 当页面内有很多的功能&#xff0c;js代码太多&#xff0c;不好维护&#xff0c;可以每个功能都有写一个js或者ts&#xff0c;这样的话&#xff0c;代码易读&#xff0c;并且容易维护&#xff0c;组合式setup写法与此结合&#x1f44d;&#…

如何设置农历日程提醒 农历提醒小妙招

在中国&#xff0c;农历仍然承载着深厚的文化传统和民俗意义。无论是庆祝传统节日&#xff0c;还是纪念亲朋的生日&#xff0c;农历日期都显得格外重要。然而&#xff0c;随着生活节奏的加快&#xff0c;我们有时会因忙碌而遗忘这些特殊的日子。这时&#xff0c;一个能够准确提…

提升写作效率:探索AI在现代办公自动化中的应用

工欲善其事&#xff0c;必先利其器。 随着AI技术与各个行业或细分场景的深度融合&#xff0c;日常工作可使用的AI工具呈现出井喷式发展的趋势&#xff0c;AI工具的类别也从最初的AI文本生成、AI绘画工具&#xff0c;逐渐扩展到AI思维导图工具、AI流程图工具、AI生成PPT工具、AI…

二维码中的文件如何列表排列?轻松在线做文件活码的简单技巧

现在二维码是常用来展示文件的手段之一&#xff0c;将文件生成二维码之后扫码就能够快速在手机上查看文件内容&#xff0c;减少了下载内存占用及传输的时间&#xff0c;通过这种方式可以更加方便快捷的获取文件内容。怎么把多个文件用列表的方式来扫码展示呢&#xff1f; 多个…

Golang开发:构建支持并发的网络爬虫

Golang开发&#xff1a;构建支持并发的网络爬虫 随着互联网的快速发展&#xff0c;获取网络数据成为了许多应用场景中的关键需求。网络爬虫作为一种自动化获取网络数据的工具&#xff0c;也因此迅速崛起。而为了应对日益庞大的网络数据&#xff0c;开发支持并发的爬虫成为了必…