C语言之结构体(Struct)

2023-11-02

结构体的两种定义方法

方法1

定义一个结构体:

struct Name
{
	int temp1;
	float temp2;
};

1.1、定义一个结构体变量:

struct Name name;

1.2 、定义一个结构体变量:

struct Name
{
	int temp1;
	float temp2;
}name;

效果相当于 struct Name name; 只不过是在定义结构体的时候顺便把结构体变量也定义了。但如果还想再定义另外一个结构体变量,还是得用方式一的方法操作一遍。

struct Name name2;

也就是说,采用了这种定义方法,struct Name就绑定在一起,成为一个新的变量了。我们不妨把struct Name理解成一个种新变量,和int,char这些一样

方法2

定义一个结构体(常用):

typedef struct
{
	int temp1;
	float temp2;
}Name;

2.1、定义一个结构体变量(常用):

Name name;

2.2、定义一个结构体变量:

typedef struct
{
	int temp1;
	float temp2;
}Name;name;

效果相当于 Name name,此处相当于用关键字typedef给该结构体取了一个别名Name。
此外,指针和结构体也经常结合使用,我们用2.1的方式(下同)来定义一个结构体变量指针。

Name *name;

结构体的成员的初始化与访问

无论是初始化,还是访问结构体成员,都用符号’.'。

Name name;
name.temp1 = 5; 

而当定义为一个结构体指针时候,再次访问成员需要用到’->‘符号。

Name *name;
name->temp1 = 5;

(*name).temp1 = name->temp1;

应用举例

#include <stdio.h>

typedef struct 
{
	char name[20];
	int age;
	float score;
}student;


void show_information(student* p);


void show_information(student* p)
{
	printf("The student's name is: %s \n",p->name);
	printf("The student's age is: %d \n", p->age);
	printf("The student's score is: %f \n", p->score);	
}


int main()
{
	student p;
	
	printf("Please enter the student's name:");
	scanf("%s",p.name);
	printf("Please enter the student's age: ");
	scanf("%d", &p.age);
	printf("Please enter the student's score: ");
	scanf("%f", &p.score);
	
	show_information(&p);	
	
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言之结构体(Struct) 的相关文章

随机推荐

  • STM32407 FreeRtos系统下lwip实现发送和接收数据包进行链路测试

    下面是一个基于STM32F407 FreeRTOS系统下lwIP实现发送和接收数据包进行链路测试的案例 硬件配置和软件环境搭建 首先 需要准备好STM32F407开发板 以太网网线和一台电脑 然后在电脑上安装好STM32CubeMX工具和K
  • HTML:实现鼠标拖拽,释放效果

    第一部分body 先定义一个块标签 例如div class drag 第二部分style 自由书写其样式 不可或缺的属性position absolute 第三部分script 鼠标拖动元素移动 即元素的位置放上变化 坐标 var drag
  • ChatGPT总结(持续更新)

    目录 体验渠道 weTab CSDN AI助手 其他插件 ChatGPT简介 ChatGPT主要用途 ChatGPT发展历程 GPT 4架构的特点和优势 ChatGPT的工作原理 神经网络和自然语言处理技术 Transformer模型 模型
  • c++纯虚数一个报错 cannot declare variable ‘a‘ to be of abstract ty

    官方点说是因为没有在子类中完成对基类的虚函数的定义 使得子类不能实例化 通俗点点说是因为父类中的纯虚数在子类中没有全部实例化 就是说明这个是做什么的 即使不用也要在子类中实例化一下 我今天就是因为想着不用先不写 结果一直报错
  • 大数据:Hive视图和索引

    一 视图 1 1 简介 Hive 中的视图和 RDBMS 中视图的概念一致 都是一组数据的逻辑表示 本质上就是一条 SELECT 语句的结果集 视图是纯粹的逻辑对象 没有关联的存储 Hive 3 0 0 引入的物化视图除外 当查询引用视图时
  • 三极管工作原理分析,精辟、透彻,看后你就懂

    说明 内容与之前那篇一样 由于之前那篇是转载百度的 现在图片受限 无法阅读 这篇自己添加了图片资源 随着科学技的发展 电子技术的应用几乎渗透到了人们生产生活的方方面面 晶体三极管作为电子技术中一个最为基本的常用器件 其原理对于学习电子技术的
  • 软件测试的原则和测试需求分析

    软件测试的原则 1 所有的测试都是以需求规格说明书为准的 2 软件测试必须基于 质量第一 的思想开展工作 如果时间与质量冲突 时间服从质量 3 事先定义好产品的质量标准 只要有了质量标准 才能根据测试结果 对产品质量进行分析和评估 4 软件
  • 蓝桥杯 基础练习 矩阵乘法

    问题描述 给定一个N阶矩阵A 输出A的M次幂 M是非负整数 例如 A 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N M 1 lt N lt 30 0 lt M lt 5 表示矩阵A的阶数和要求的幂数 接下
  • 国产代码审计工具Pinpoint介绍

    硬核国产代码审计工具Pinpoint介绍 简介 Pinpoint是由国内源伞科技所研制的一款静态代码审计工具 源伞科技公司是香港科技大学安全实验室的众多博士创建的 产品集成了实验室多年的研究成果 在众多国际顶级学术会议上都发表了成果论文 在
  • MinGW/GCC/CodeBlocks 等在 Win7 编译出现 Permission Denied 错误 - 解决方法

    本文分享了以 MinGW 为主要编译模块的编译器 如 MinGW 自身 以及Dev Cpp CodeBlocks 这些调用 MinGW 进行编译的编译器 在编译连接过程中出现 Permission Denied 错误的解决方法 同样 可能也
  • js搜索关键字,并高亮显示

    当我们搜索时 总想要自己输入的字体显示为重点 今天我为大家解决这个问题
  • 集成spring-boot-admin(一)搭建admin-server

    1 什么是SBA SBA全称为Spring Boot Admin 是一个管理和监控Spring Boot应用程序的开源项目 分为admin server 与 admin client 两个组件 admin server是一个单独的微服务 通
  • C++算术类型

    算术类型分为两类 整型 integral type 包含字符类型和布尔类型 和浮点型 算术类型的尺寸在不同机器有所差别 C 算术类型 类型 含义 最小尺寸 bit 字节 byte bool 布尔类型 未定义 1 char 字符型 8位 1
  • 不相交的线

    不相交的线 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数 现在 可以绘制一些连接两个数字 nums1 i 和 nums2 j 的直线 这些直线需要同时满足满足 nums1 i nums2 j 且绘制的直线不与任
  • 解决VirtualBox只能安装32位系统的问题

    安装VirtualBox虚拟机后发现只能安装32位系统 如下图 原因分析 电脑未开启cpu虚拟化技术 解决方式 需要到电脑BIOS里设置一下 方可安装 64位系统 操作方式 1 进入BIOS设置 根据电脑型号不同进入方式不一致 可网上查找进
  • 每天定时用爬虫爬取新闻发送给三爷

    需求 1 获取前十条科技要闻 2 通过邮件发送给指定收件人 3 定时发送 1 获取要闻 选的是新浪科技网https tech sina com cn 爬取前十名要闻 import requests from requests import
  • tensorlfow-yolov3训练

    本帖纯粹记录个人开发过程 服务器环境 V100服务器 ubuntu16 04 cuda10 0 tensorflow1 13 1 python3 5 tensorflow yolov3版本 https github com YunYang1
  • ThreadLocal理解及其内存泄露

    ThreadLocal理解及其内存泄露 ThreadLocal可以理解为 为一个线程隔离的变量 他不是一个集合 他只是一个类 这个类可以set get remove set时使用的是哪个线程 get时 也必需用哪个线程去获取 才能获取到值
  • 关于Proximal Methods,近端梯度下降的理解

    本文介绍了两种Proximal Methods的证明方法以及实现 内容主要来源于王然老师的 Proximal Methods 一文以及网络 加入了部分个人理解 由于水平有限 如有不妥之处 敬请指正 为什么会有Proximal methods
  • C语言之结构体(Struct)

    Struct 结构体的两种定义方法 方法1 方法2 结构体的成员的初始化与访问 应用举例 结构体的两种定义方法 方法1 定义一个结构体 struct Name int temp1 float temp2 1 1 定义一个结构体变量 stru