C语言之结构体(struct)详解
目录
- 为什么需要引入结构体
- struct
- 定义
- typedef与#define
- 结构体变量初始化及成员访问
- 结构体访问
- 总结
为什么需要引入结构体
原有的数据类型不能满足需求,因此才设计了构造类型结构体
struct
定义
struct name { 基础类型 结构成员 }
1.无名构造类型
2.有名构造类型
struct student { char name[30]; char sex; int age; float high; }stu; struct student stu2;
3.别名构造体类型
typedef struct student { char name[30]; char sex; int age; float high; }STUDENT; STUDENT stu, stu2;
typedef与#define
typedef是一个常用于对结构体取别名的关键字,构成的语句参与编译,而#define是定义的宏在预处理阶段就已经处理完毕
结构体变量初始化及成员访问
- 初始化是一种特殊的语法不等价于赋值
- 凡是基本类型既可以定义的时候初始化也可以先定义在初始化
- 凡是构造类型要么在定义的时候初始化,要么先定义成员再分别进行赋值和基础数据类型不同
结构体访问
- 点成员运算符.
- 指向成员运算符->或者(*).
struct student *pst = &st pst.age (*pst).age st.age
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!
相关推荐
-
C语言中结构体变量私有化详解
背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据结构.结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问. 问题描述 C语言结构体定义中的变量默认是公有(Public)属性,如果实现成员变量的
-
C语言 结构体和指针详解及简单示例
指针也可以指向一个结构体,定义的形式一般为: struct 结构体名 *变量名; 下面是一个定义结构体指针的实例: struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 } stu1 = { "Tom", 12, 18, 'A', 136.5 }; //结构体指针struct stu *pstu = &stu1; 也可以在定义结构体的同时定义结构
-
C语言自定义数据类型的结构体、枚举和联合详解
结构体基础知识 首先结构体的出现是因为我们使用C语言的基本类型无法满足我们的需求,比如我们要描述一本书,就需要书名,作者,价格,出版社等等一系列的属性,无疑C语言的基本数据类型无法解决,所以就出现了最重要的自定义数据类型,结构体. 首先我们创建一个书的结构体类型来认识一下 struct Book { char name[20]; char author[20]; int price; }; 首先是struct是结构体关键字,用来告诉编译器你这里声明的是一个结构体类型而不是其他的东西,然后是Boo
-
C语言结构体,枚举,联合体详解
目录 1.什么是结构体.枚举.联合体 2.定义结构体 2.1 包含结构体成员变量.variable 2.2 tag.结构体成员变量 2.3 用结构体声名变量 2.4 用typedef 创建新类型 2.5 两个结构体相互包含 2.6 结构体变量初始化 2.7 结构体指针 3.枚举 3.1 定义方式 3.2 为什么用枚举 3.3 枚举变量的定义 3.4 实例 3.5 枚举实际用途 4.联合体 4.1 与结构体区别 4.2 定义 总结 1.什么是结构体.枚举.联合体 结构体(struct)是由一系列具
-
C语言自定义类型详解(结构体、枚举、联合体和位段)
目录 前言 一.结构体 1.结构体类型的声明 2.结构体的自引用 3.结构体变量的定义和初始化 4.结构体内存对齐 5.结构体传参 二.位段 1.位段的定义 2.位段的内存分配 3.位段的应用 三.枚举 1.枚举类型的定义 2.枚举的优点 3.枚举的使用 四.联合体(共用体) 1.联合体的定义 2.联合体的特点 3.联合体的大小计算 总结 前言 一.结构体 1.结构体类型的声明 当我们想要描述一个复杂变量--学生,可以这样声明. ✒️代码展示: struct Stu { char name[20
-
C语言结构体内存的对齐知识详解
前言 在前面的章节中,我们谈到了C语言中整数以及浮点数的储存 今天,我们来谈一谈一些关于结构体内存的知识. 我们先来看一个例子: struct S1 { char c1; int i; char c2; }; 大家来猜猜这个结构体S1的内存是多少? 相信会有人给出 6 的结果,他们或许是这样想的,两个 char 类型分别为一个字节,一个 int 类型又为4个字节,加起来刚好为6个 但是 结果真是如此吗? 我们来看看运行结果: 为什么呢,接下来我们就引出正文. 一.结构体内存对齐规则 首先,正如引
-
C语言之结构体(struct)详解
目录 为什么需要引入结构体 struct 定义 typedef与#define 结构体变量初始化及成员访问 结构体访问 总结 为什么需要引入结构体 原有的数据类型不能满足需求,因此才设计了构造类型结构体 struct 定义 struct name { 基础类型 结构成员 } 1.无名构造类型 2.有名构造类型 struct student { char name[30]; char sex; int age; float high; }stu; struct student stu2; 3.别名
-
C语言结构体struct详解
目录 结构体的概念 结构体类型的声明 结构体变量的创建 typedef关键字 结构体的嵌套 结构体变量的初始化 结构体成员的访问 结构体的传参 总结 结构体的概念 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.组成结构型数据的每个数据称为结构型数据的“成员”.结构体通常用来表示类型不同但是又相关的若干数据. 结构体类型的声明 结构体类型的声明要使用 s t r u c t \color{#0000FF}{ struct} struct关键字,举个例子,比如我要定义一个学生的结构体类
-
详解C语言中结构体(struct)的用法
目录 粉丝问答 三种结构体类型变量说明 1. 先定义结构,再定义结构变量 2. 定义结构体类型的同时说明变量 3. 直接说明结构变量 结构体成员表示方法 结构体指针做参数 结构体初始化 定义变量的同时初始化 先定义在初始化 常用初始化 typedef与struct 前置声明 结构体对齐 粉丝问答 有个粉丝在群里问了这样一个问题,问题在图中已经标出,如下图. DQuestsion 头文件的结构体的定义为: typedef struct{ u8 bmRequestType; u8 bRequest;
-
Go语言中Struct与继承与匿名字段和内嵌结构体全面详解
目录 定义 内嵌结构体 在golang中,采用匿名结构体字段来模拟继承关系.这个时候,可以说 Student 是继承自 Person . type Person struct { name string age int sex string } func (Person) SayHello(){ fmt.Println("this is from Person") } type Student struct { Person school string } func main() {
-
C语言中结构体struct编写的一些要点解析
一.关于结构体的声明 1.匿名声明.如: struct { int i,j; }point; 说明: 这段代码的含义是,声明一个无名(anonymous)的结构体,并创建了一个结构体变量point.如果这段声明是放在全局域(在任意函数(比如main函数)外)内,那么point内的变量将被初始化为默认值,换句话说,以这种方式声明结构体变量时就已经为它分配了内存空间. 适用于该结构体只需要产生一个变量!本例中,该匿名结构体将有且仅有point这个结构体变量! 不同的匿名结构体变量,类型是不同的!如
-
C语言 结构体数组详解及示例代码
所谓结构体数组,是指数组中的每个元素都是一个结构体.在实际应用中,结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生.一个车间的职工等. 定义结构体数组和定义结构体变量的方式类似,请看下面的例子: struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 }class[5]; 表示一个班级有5个学生. 结构体数组在定义的同时也可以初始化,例如: str
-
解析C语言中结构体struct的对齐问题
首先看一下结构体对齐的三个概念值: 数据类型的默认对齐值(自身对齐): 1.基本数据类型:为指定平台上基本类型的长度.如在32位机器中,char对齐值为1,short为2,int,float为4,double为8: 结构体:其数据成员中默认对齐值最大的那个值. 2.指定对齐值:#pragma pack (value)时的指定对齐值value. 3.数据类型的有效对齐值:默认对齐值和指定对齐值中小的那个值. 有了这些值,我们就可以很方便的来讨论具体数据结构的成员和其自身的对齐方式.有效对齐值N是最
-
c#入门之枚举和结构体使用详解(控制台接收字符串以相反的方向输出)
枚举.结构枚举的类型有限(short.byte...)且是相同的,在MSDN上找到枚举的一些示例,觉得这个还不错: 复制代码 代码如下: enum myWeekDay { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };int i = 3;myWeekDay today = (myWeekDay)i; 枚举是需要先声明的,然后再通过新建一个变量(today)为枚举类型来使用.枚举默认的基本类型值从0开始,递
-
C语言中结构体(struct)的几种初始化方法
本文给大家总结的struct数据有3种初始化方法 1.顺序 2.C风格的乱序 3.C++风格的乱序 下面通过示例代码详细介绍这三种初始化方法. 1)顺序 这种方法很常见,在一般的介绍C的书中都有介绍.顺序初始化的特点是: 按照成员定义的顺序,从前到后逐个初始化:允许只初始化部分成员:在被初始化的成员之前,不能有未初始化的成员. 示例: struct User oneUser = {10, "Lucy", "/home/Lucy"}; 2)乱序(C风格) 顺序的缺陷是
-
Go语言空结构体详解
目录 前言 什么是空结构体 特点 地址相同 大小为0 原理探究 使用场景 集合(Set) channel中信号传输 总结 前言 在使用 Go 语言开发过程中,我们不免会定义结构体,但是我们定义的结构体都是有字段的,基本不会定义不包含字段的 空结构体.你可能会反过来问,没有字段的空结构体有什么用呢?那么我们这篇文章就来研究下空结构体吧! 注:本文基于go 1.14.4 分析 什么是空结构体 我们说不包含任何字段的结构体叫做空结构体,可以通过如下的方式定义空结构体: 原生定义 var a struc
随机推荐
- js正则表达式验证大全(收集)
- Windows下安装MySQL5.5.19图文教程
- CPQuery 解决拼接SQL的新方法
- Linux中curl命令和wget命令的使用介绍与比较
- JAVA简单分组的算法实现
- PHP控制网页过期时间的代码
- Codeigniter出现错误提示Error with CACHE directory的解决方案
- 一个PHP操作Access类(PHP+ODBC+Access)
- 数据库中使用正则表达式小结
- 用C实现PHP扩展 Image_Tool 图片常用处理工具类的使用
- 深入浅析JavaScript中的constructor
- 无限扩展的年份select
- webpack处理 css\less\sass 样式的方法
- js中new一个对象的过程
- IE:保存当前网页的全部内容
- Android实现EditText中添加和删除bitmap的方法
- java Iterator接口和LIstIterator接口分析
- PHP实现对图片的反色处理功能【测试可用】
- iOS利用Label实现的简单高性能标签TagView
- 微信小程序实现动态获取元素宽高的方法分析