结构体基础全家桶(1)创建与初始化

news2024/12/24 2:43:04

目录

结构体概念:

结构体类型:

结构体变量的创建:

定义结构体变量的三种方式:

结构体变量的引用:

结构体变量的初始化:

结构体数组:

结构体数组定义:

结构体数组初始化:

结尾:下集预告

前往下集:


结构体概念:

C语言允许用户创建这样一个结构数据:它由多种类型的数据结合成一个整体,以便引用;这样一
整体​​​​​被称为结构体。结构体中的数据相互关联,便于用户引用。

结构体类型:

结构体的一般形式如下:
struct 结构体名
{成员列表};
  • 1.结构体的标志:struct, 表明这是一个结构体类型。
  • 2.结构体的名称:用作结构体的标志,又称结构体标记。
  • 3.成员列表:结构体的组成部分,其中的成员共同构成结构体。成员由成员类型(int 、char等)和名称(自己给它起的名字)构成。

注意:结构体的成员可以是结构体,也就是结构体内嵌结构体。

结构体变量的创建:

那么让我们先创建一个结构体出来看看:

struct student//结构体名
{
    int num;//结构体成员
    char name[20];
    char sex;
    int age;
    float score;
    char addr[30];
};

这里我们创建了一个结构体,但是其并没有储存任何数据,也就是没有太多意义。接下来我们需要对其进行初始化。

定义结构体变量的三种方式:

  • 1.先声明结构体类型在定义变量名:如上我们已经定义了一个结构体类型:struct student,我们可以用它来定义变量。
struct student{  //结构体类型名
    ...
    ...
    ...
}student1, student2 //结构体变量名
  • 2.在声明类型的同时定义变量:
struct 结构体名
{
    成员表列
}变量名表列;
  • 3.直接定义结构类型变量:即不出现结构体名
    struct
    {
        成员表列
    }变量名表列;

    但是这样会导致结构体只能使用一次。

结构体变量的引用:

知道结构体怎样创建后,我们需要了解一下结构体的变量如何引用:

这里我们需要先介绍一下”."成员运算符号,它在所有运算符号中优先等级最高。意思是找到结构体中的该成员。

  • 1.不能将一个结构体变量作为一个整体输入和输出,我们只能对结构变量中的各个成员分别进行输入和输出。其方法为:
结构体变量名.成员名
stdent1.age
student2.name
//结合上面我们创建的结构变量
  • 2.如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。只能对最低的成员进行赋值或存取以及运算。例如:
strct date{
      int month;
      int day;
}brithday;

struct student
{
    char name[20];
    int age;
    struct date birthday;
}student1;
//定义:
student1.brithday.month
  • 3.可以引用结构体变量成员的地址,也可以引用结构体变量的地址。
    scanf("%d", &student1.num);// 输入 student1.num 的值
    printf("%p", &student1);// 输出 student1 的首地址

    但不能用以下语句整体读入结构体变量如:

    scanf("%d,%s,%c,%d,%f,%s", &student1);

    结构体变量的地址主要用于作函数参数,传递结构体的地址。

结构体变量的初始化:

结构体初始化主要是在对结构体进行定义时,对我们自己定义的结构体变量成员赋值。
struct student {

	int num;
	char nam[20];
	char sex;
	int age;
}wang1={10,"wang",'n',20};

结构体数组:

没错结构体也有数组!!当我们需要对一个类型的结构体进行多次使用时,我们可以用结构体数组来使代码的书写更加方便,提高代码的可读性。

结构体数组定义:

和普通数组的定义相似,结构体数组也是先声明单个数组元素的类型,然后表明其为数组。
  • 1.间接定义,先定义单个结构体,再定义结构体:
struct student {

	int num;
	char nam[20];
	char sex;
	int age;
}wang1={10,"wang",'n',20};

struct student arr[3];

int main()
{
	arr[1].age = 10;//定义

	return 0;
}
  • 当然我们还有另一种方式进行定义:直接定义:
struct student {

	int num;
	char nam[20];
	char sex;
	int age;
}arr2[3];

结构体数组初始化:

与其它数组初始化类似:
struct student {

	int num;
	char nam[20];
	char sex;
	int age;
}arr2[3] = {
	{20,"asd",'n',50},
    {100,"fgh",'a',100},
{200,"asd",'b',300}
};

结尾:下集预告

这篇文章就讲到这里下一篇我们将会讲述结构体指针的创建与应用,对于指针大家可以先看这篇文章进想了解:

[小白都爱的指针入门理解 ]

前往下集:

【结构体基础全家桶(2)结构体指针 】http://t.csdnimg.cn/hUCsb

愿你激流勇进之时,不忘孤芳自赏

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

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

相关文章

MySQL中的时间函数整理汇总

1.获取当前时间 -- 获取当前时间 SELECT NOW(); -- 获取当前日期 SELECT CURDATE(); -- 获取当前时分秒 SELECT CURTIME(); 2.获取对应日期对应的年/月/日/月份名/星期数 -- 返回对应日期对应的年/月/日/月份名/星期数 select year(now())as 年,month(now())as 月,day(now())…

Java Wait Notify

概念 所有对象继承Object方法 用于同步资源锁控制等待以及唤醒 Demo: Message 类同步资源 Waiter 持有Msg,New两个线程Waiter等待 Notifier 持有Msg,通过Msg通知Waiter线程继续 实战 package com.example.demo.java.base.wait;/*** messa…

LeetCode-克服链表不能随机访问的问题

1.重排链表 题目描述: 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值&#xff0…

node 版本管理(windows/linux)

windows 下载 Releases coreybutler/nvm-windows GitHub 查看版本 nvm --version 查看已经安装的版本 nvm ls 安装指定版本 nvm install 5.8.0 卸载制定的版本 nvm uninstall 5.8.0 切换使用指定的版本 nvm use 14.21.3 linux 下载 https://github.com/nvm-sh/nvm/t…

Azure Machine Learning - 提示工程简介

OpenAI的GPT-3、GPT-3.5和GPT-4模型基于用户输入的文本提示工作。有效的提示构造是使用这些模型的关键技能,涉及到配置模型权重以执行特定任务。这不仅是技术操作,更像是一种艺术,需要经验和直觉。本文旨在介绍适用于所有GPT模型的提示概念和…

IP代理如何影响网站的速度?代理ip服务器有哪些作用?

目录 前言 一、如何影响速度 二、代理服务器的作用 1. 隐藏真实IP地址 2. 绕过访问限制 3. 分布式访问 4. 数据缓存和加速 总结 前言 IP代理是一种通过在用户和目标网站之间引入代理服务器来访问目标网站的方式。代理服务器充当中间人,将用户的请求转发给目…

基于Hadoop的农产品价格信息检测分析系统

基于Hadoop的农产品价格信息检测分析系统 前言数据处理模块1. 数据爬取2. 数据清洗与处理3. 数据存储 数据分析与检测模块1. 农产品价格趋势分析2. 农产品价格检索3. 不同市场价格对比 创新点 前言 为了更好地了解农产品市场价格趋势和不同市场之间的价格差异,我设…

JavaOOP篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、什么是B/S架构?什么是C/S架构二、Java都有那些开发平台?三、什么是JDK?什么是JRE?四、Java语言有哪些特点五、面向对象和面向过程的区别 前言 前些天发现了一个巨牛的人工智能学习网站&#xff…

科大讯飞(深圳)测开面试真题

一面(测试组长面) 1、上家公司项目以及团队的规模是怎么样的? 2、你负责的项目整体的流程是怎么样的? 3、自动化实施过程中,是如何和业务测试进行沟通的? 4、在上家公司你已经是专职做自动化了&#xf…

【C语言】——认识指针变量和地址,以及指针变量类型的意义

🎥 岁月失语唯石能言的个人主页 🔥个人栏专:秒懂C语言 ⭐若在许我少年时,一两黄金一两风 目录 前言 一、指针变量和地址 1.1 取地址操作符(&) 1.2 指针变量和解引用操作符&#xff…

Kuaipu-M6 整合管理平台系统 SQL注入漏洞复现

0x01 产品简介 Kuaipu-M6 整合管理平台系统是一款功能丰富、易于使用和高度灵活的企业级管理软件,为企业提供了一体化的管理解决方案,帮助企业实现优化运营和提高竞争力的目标。 0x02 漏洞概述 Kuaipu-M6 整合管理平台系统 SalaryAccounting.asmx接口处存在SQL注入漏洞,未…

YOLOv5改进 | Neck篇 | Slim-Neck替换特征融合层实现超级涨点 (又轻量又超级涨点)

一、本文介绍 本文给大家带来的改进机制是Slim-neck提出的Neck部分,Slim-neck是一种设计用于优化卷积神经网络中neck部分的结构。在我们YOLOv5中,neck是连接主干网络(backbone)和头部网络(head)的部分&…

springCloud项目打包如何把jar放到指定目录下

springCloud项目打包如何把jar发放到指定目录下 maven-antrun-plugin springCloud微服务打包jar,模块过多;我的项目模块结构如下: 我把实体类相关的单独抽离一个模块在service-api下服务单独写在service某块下, 每个模块的jar都…

模拟实验中经常遇到的问题和常用技巧

简介 最近在进行新文章的数值模拟阶段。上一次已经跟读者们分享了模拟实验的大致流程,见:数值模拟流程记录和分享 。 本文是在前提下,汇总了小编在模拟实验中经常遇到的问题和常用技巧。 文章目录 简介1. 隐藏输出结果自动创建文件夹保存多…

nginx_rtmp_module 之 ngx_rtmp_live_module模块

模块作用 直播模块代码 ngx_rtmp_live_module.c,主要作用是:当客户端推流或者拉流的时候,创建的rtmp session会加入到 live 模块的存储链表中。 模块配置命令 static ngx_command_t ngx_rtmp_live_commands[] {{ ngx_string("live&…

java SSM兼职平台系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM兼职平台系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和 数据库,系统主要采用B/…

【ArkTS】样式复用

如下代码,可以发现每个元素的样式一致,这时就可以将公共样式封装起来 此时可以使用Styles修饰符将公共样式进行封装 Styles修饰符 Entry Component struct Index{build() {Column(){Text(我是Text).ComStyle()Button(我是Button).ComStyle()Image().Co…

在Node.js中MongoDB的连接查询操作

本文主要介绍在Node.js中MongoDB的连接查询操作。 目录 Node.js中MongoDB的连接查询操作使用原生的mongodb驱动程序进行连接查询操作使用Mongoose库进行连接查询操作注意项 Node.js中MongoDB的连接查询操作 在Node.js中使用MongoDB进行连接操作,可以使用原生的mong…

时序预测 | Python实现CNN电力需求预测

时序预测 | Python实现CNN电力需求预测 目录 时序预测 | Python实现CNN电力需求预测预测效果基本描述程序设计参考资料预测效果 基本描述 该数据集因其每小时的用电量数据以及 TSO 对消耗和定价的相应预测而值得注意,从而可以将预期预测与当前最先进的行业预测进行比较。使用该…

Win7系统桌面出现白色透明框的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…