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

目录

结构体概念:

结构体类型:

结构体变量的创建:

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

结构体变量的引用:

结构体变量的初始化:

结构体数组:

结构体数组定义:

结构体数组初始化:

结尾:下集预告

前往下集:


结构体概念:

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AlexNet(pytorch)

AlexNet是2012年ISLVRC 2012(ImageNet Large Scale Visual Recognition Challenge)竞赛的冠军网络,分类准确率由传统的 70%提升到 80% 该网络的亮点在于: (1)首次利用 GPU 进行网络加速训练。 &#xff…

介绍strncpy函数

strncpy函数需要引用#include <string.h>头文件 函数原型&#xff1a; char *_Dest 是字符串的去向 char *_Source是字符串的来源 size_t_Count是复制字符串的大小 #include <stdio.h> #include <string.h> int main() { char arr[128] { \0 }; …

数据结构之排序

目录 ​ 1.常见的排序算法 2.插入排序 直接插入排序 希尔排序 3.交换排序 冒泡排序 快速排序 hoare版本 挖坑法 前后指针法 非递归实现 4.选择排序 直接选择排序 堆排序 5.归并排序 6.排序总结 一起去&#xff0c;更远的远方 1.常见的排序算法 排序&#xff1a;所…

积分球均匀光源遥感器如何保持稳定

积分球的亮度均匀性取决于其内部涂层的反射率和分布情况。当光源通过积分球时&#xff0c;光会被内部的涂层多次反射&#xff0c;最终从出光口均匀地散射出去。为了提高亮度均匀性&#xff0c;可以采用具有高反射率和均匀分布的光源&#xff0c;同时选择合适的涂层材料和涂层厚…

NXP应用随记(五):eMios功能点阅读随记

目录 1、概念点 2、eMios功能点 2.1、eMIOS - Single Action Input Capture (SAIC) 2.2、eMIOS - Single Action Output Compare (SAOC) 2.3、eMIOS - Double Action Output Compare (DAOC) 2.4、eMIOS - Pulse/Edge Counting (PEC) – Single Shot 2.5、eMIOS - Pulse/E…

算法:程序员的数学读书笔记

目录 ​0的故事 ​一、按位计数法 二、不使用按位计数法的罗马数字 三、十进制转二进制​​​​​​​ ​四、0所起到的作用​​​​​​​ 逻辑 一、为何逻辑如此重要 二、兼顾完整性和排他性 三、逻辑 四、德摩根定律 五、真值表 六、文氏图 七、卡诺图 八、逻…

【算法Hot100系列】最长回文子串

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

向华为学习:基于BLM模型的战略规划研讨会实操的详细说明,含研讨表单(二)

上一篇文章&#xff0c;华研荟结合自己的经验和实践&#xff0c;详细介绍了基于BLM模型的战略规划研讨会的设计和组织流程&#xff0c;提高效率的做法。有朋友和我私信沟通说&#xff0c;其实这个流程不单单适合于BLM模型的战略规划研讨会&#xff0c;实际上&#xff0c;使用其…

Linux centos7安装redis 6.2.14 gz并且使用systemctl为开机自启动 / 彻底删除 redis

1.下载 && 减压 wget http://download.redis.io/releases/redis-6.2.14.tar.gz tar -zvxf redis-6.2.14.tar.gz 2.编译&#xff08;分开运行&#xff09; cd redis-6.2.14 make cd src make install 安装目录展示 3.redis.conf 配置更改 daemonize yes supervised s…

【STM32入门】4.1中断基本知识

1.中断概览 在开展红外传感器遮挡计次的实验之前&#xff0c;有必要系统性的了解“中断”的基本知识. 中断是指&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转…

交友网站的设计与实现(源码+数据库+论文+开题报告+说明文档)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

听力健康“吃”出来

大多数的研究报告都指出&#xff0c;听力下降的最常见原因是年龄和噪音暴露。然而&#xff0c;近年来越来越多的文章开始探讨其他因素对听力的影响。食物不仅是维持人类基本生存的必需品&#xff0c;随着营养学的进步&#xff0c;人们也逐渐认识到食物中的营养与保持健康之间存…

Unity中Shader URP 简介

文章目录 前言一、URP&#xff08;Universal Render Pipeline&#xff09;由名字可知&#xff0c;这是一个 通用的 渲染管线1、Universal&#xff08;通用性&#xff09;2、URP的由来 二、Build-in Render Pipeline&#xff08;内置渲染管线&#xff09;1、LWRP&#xff08;Lig…

产品经理在项目周期中扮演的角色Axure的安装与基本使用

目录 一.项目周期流程 二.Axure是什么 三.Axure安装 3.1 一键式安装 3.2 汉化 3.3 授权登录 四.Axure的界面介绍及基本使用 4.1 菜单栏的使用 4.2 工具栏的使用 4.3 页面概要的使用及组件的使用 4.4 组件的样式设计 一.项目周期流程 在一般的项目周期中包含的工作内容有&…

Tektronix泰克TCP303示波器电流探头

主要特点和优点&#xff1a; ● 交流/直流测量功能 ● DC~100MHz电流探头放大器&#xff08;TCPA300&#xff09;&#xff0c;当使用&#xff1a; - DC~100MHz, 30A DC&#xff08;TCP312&#xff09; - DC~50MHz, 50A DC&#xff08;TCP305&#xff09; - DC~5MHz, 150A DC&a…

VC++项目的32位、64位的配置和链接问题

新建一个项目&#xff0c;默认是x86配置&#xff1b; 添加包含目录、库目录&#xff0c;之后可以编译通过&#xff1b; 但是链接会出错&#xff0c;因为链接的dll是64位&#xff1b; 把项目配置改为x64&#xff1b; 需要把包含目录和库目录针对x64重新添加&#xff0c;否则会…

CSS学习笔记整理

CSS 即 层叠样式表/CSS样式表/级联样式表&#xff0c;也是标记语言&#xff0c; 用于设置HTML页面中的文本内容&#xff08;字体、大小、对齐方式等&#xff09;、图片的外形&#xff08;宽高、边框样式、边距&#xff09;以及版面的布局和外观显示样式 目录 准备工作 Chrome调…

【JavaWeb学习笔记】10 - 手写Tomcat底层,Maven的初步使用

一、Maven 1.Maven示意图 类似Java访问数据库 2.创建Maven案例演示 配置阿里镜像 找到setting目录 但一开始配置不存在该文件 需要去Maven主目录下的conf拿到settings拷贝到上述目录 拷贝到admin/.m2后打开该settings 在<mirrors>内输入镜像地址 <mirror> …

SpringBoot中处理处理国际化

SpringBoot中处理处理国际化 1. 创建SpringBoot项目2. resource下创建i18n目录3. 右键i18n新建资源包4. 弹框中添加需要支持的国际化语言5. messages.properties中添加需要国际化的键6. application.yaml添加配置7. 国际化工具8. 使用功能9 场景问题 1. 创建SpringBoot项目 2.…

【Flink-cdc-Mysql-To-Kafka】使用 Flinksql 利用集成的 connector 实现 Mysql 数据写入 Kafka

【Flink-cdc-Mysql-To-Kafka】使用 Flinksql 利用集成的 connector 实现 Mysql 数据写入 Kafka 1&#xff09;环境准备2&#xff09;准备相关 jar 包3&#xff09;实现场景4&#xff09;准备工作4.1.Mysql4.2.Kafka 5&#xff09;Flink-Sql6&#xff09;验证 1&#xff09;环境…