首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言——自定义类型

前言 在之前的学习中,我们学习过数组,数组用来存放一些相同类型的变量;那如果我们需要存储不同类型的数据,数组就无法满足我们的需求,所以,现在就来学习一下能够存放不同类型的变量--自定义类型...,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构体的大小就是所有最大对齐数(含嵌套结构体中成员的对齐数)的整数倍。...这里来看一下联合体的大小: union Un { char c; int i; }; int main() { //联合变量的定义 union Un un = {0}; //计算连个变量的...对一个成员赋值,其他成员的值跟着变化 union Un { char c; int i; }; int main() { //联合变量的定义 union Un un =...枚举常量优点: 可以增加代码的可读性和可维护性 相对于#idefine定义的标识符,枚举类型类型检查,更加谨慎 便于调试,预处理阶段会删除#define定义的符号 使用方便,一次可以定义多个变量 枚举常量是遵循作用域规则的

11010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C 语言】数组 ( 数组类型表达 | 定义数组类型 )

    文章目录 总结 一、数组类型表达 二、定义数组类型 三、代码示例 总结 // 定义类数组数据类型 int [10] , 类型别名为 ArrayType typedef int (ArrayType...)[10]; // 与 int array[10] = {0}; 作用相同 ArrayType array2 = {0}; 一、数组类型表达 ---- C 语言中的 数据类型 分为 基础数据类型...定义数组类型 ---- 定义数组类型 : 小括号 () 优先级高于 中括号 [] , 二者的结合方向都是自左向右 ; 参考 C 运算符 结合性 ; typedef int (ArrayType)[10]...中 , 有小括号 , 优先考虑小括号 , 核心标识符是 ArrayType ; // 定义类数组数据类型 int [10] , 类型别名为 ArrayType typedef int...int array[10] = {0}; // 定义类数组数据类型 int [10] , 类型别名为 ArrayType typedef int (ArrayType)[10

    1.7K10

    C语言进阶——自定义类型

    ---- 前言 C语言中的数据类型可以分为两种:简单数据类型和复杂数据类型,简单数据类型就是我们经常用到的整型(int)、实型(float)、字符型(char)等,复杂数据类型中有结构体(struct...一、结构体 1.定义   结构体是一种特殊数据类型,可以用来描述复杂对象,用户可以自定义其中的变量类型,比如定义一个用来储存学生信息的结构体 stu,其中的成员变量就包含有姓名、性别、年龄、学号等信息,...,结构体支持嵌套定义和指定元素初始化。...,其他成员会初始化为0 3.结构体嵌套定义时,初始化子字符串需要再次进行访问  6.内存对齐   内存对齐是个很有意思的东西,为了方便数据读取,设计出了这么个东西。...总之,自定义类型可以用来描述复杂对象,实现更高级的数据存储以及较复杂的程序实现,比如我们耳熟能详的C语言课设系列(通讯录、职工工资管理系统等),其中就必须使得自定义类型,其实都不难,只要好好学习就能乘风破浪

    36920

    C语言_自定义类型详解

    结构体定义与初始化 struct SN { char c; int i; }sn1 = { 'q',100 }, sn2 = {.i=200,.c='w'};//全局变量 int...main() { printf("%c %d\n", sn2.c, sn2.i); return 0; } 结构体里嵌套结构体 struct SN { char c;...如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。...3.1枚举类型定义 枚举,里面是枚举的可能取值,逗号。 3.2 枚举优点 四.联合(共用体) 联合也是一种特殊的自定义类型。...这种类型定义的变量包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体) 4.1 联合大小的计算 联合的大小至少是最大成员的大小。

    19640

    C语言】自定义类型总结

    ✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 ---- 文章目录 结构体 结构的定义与声明 结构体的自引用 结构体变量的定义和初始化...我们称之为匿名结构体类型 //匿名结构体类型 struct { int a; char b; float c; }x; struct { int a; char b; float c; }a[20],...如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。...我们再来一个练习,结构体嵌套计算大小: #include struct S3 { double d; char c; int i; }; struct S4 { char c1...防止了命名污染(封装) 便于调试 使用方便,一次可以定义多个常量 ---- 联合(共用体) 联合也是一种特殊的自定义类型这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体

    30230

    C语言数据类型定义

    数据类型定义 1、数据类型定义 变量的定义: 数据类型 变量名【标识符】 变量的赋值: 变量名 = 值; 数据类型 变量名【标识符】 = 值 标示符的命名规则: 1、字母、数字、下划线 2、不能以数字开头...3、见名知义 4、不能和同一函数内的其他标示符重复 5、不能使用C语言关键字 6、区分大小写 标示符: ABC abc —abc _abc. 123_bac a_b_123 常量的定义: 1、const...数据类型 常量名 2、【宏定义】#deifne 常量名 值 注意: 1、通过#define 定义的常量 是根据值来匹配数据类型的 2、const 修饰的常量是不安全 可以通过指针来修改 2、进制: 注意...0区分 int c=0x10;//十六进制中的10在程序中定义一个十六进制数需要在数前面加上0x区分 int d=0X10;//十六进制中的10在程序中定义一个十六进制数需要在数前面加上0X区分 注意:...在格式化输入printf("%c",变量)通过占位符%c来接收的 每一个char类型都对应在ASCII中有具体的值 例如:数字【0】对应的ASCII值为48 字母【A】对应的ASCII值为65 字母【

    1.3K30

    C语言】自定义类型:结构体

    比如,定义一个链表节点: struct Node { int data; struct Node next; };    这个代码中,data是节点的数据,而struct Node next就包含了下一个节点...占据了,所以只能去4这个位置存放i,如图:    这就是第二个成员i的存放位置,接下来我们来看第三个成员怎么存放    第三个成员c2也是字符类型,字符类型的大小为1个字节,比VS默认对齐数小...,是char类型c2,大小为1,比VS默认对齐数小,所以它的对齐数是1,任何整数都是1的倍数,所以可以直接挨着c1存放c2,如图:    最后就是一个整型成员i,它的对齐数为4,所以必须对齐4...类型,这里我就直接给出答案,如图:    接下来就是嵌套的结构体3,也就是练习3中的那个结构体,要想知道它要放在哪里就要来看我们的第4条规则:    如果嵌套了结构体的情况,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处...我们首先要知道传值调用和传址调用的区别,可以参照博客:【C语言】手把手带你拿捏指针(1)(初始指针)    然后我们开始分析,在传值调用时,函数会创建一个和这个结构体一模一样的结构体形参,此时会占用空间

    12110

    C语言:自定义类型——结构体

    一、什么叫做结构体         C语⾔已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类型还是不够的,假设我想描述学⽣,描述⼀本书,这时单...C语言为了解决这个问题,增加了结构体这种自定义的数据类型,让程序员可以自己创造适合的类型。        ...⽐如,定义⼀个链表的节点: 仔细分析,这其实是不行的,因为结构体中在包含一个同类型的结构体,这样结构体就会无穷的大,是不合理的! 正确的自引用方式应该是包含下一个结构体的指针类型!...如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构 体的整体大小就是所有最⼤对⻬数(含嵌套结构体中成员的对齐数)的整数倍。...位段的成员必须是 int、unsigned int 或signed int ,在C99中位段成员的类型也可以 选择其他类型。 2. 位段的成员名后边有⼀个冒号和⼀个数字。

    9510

    C语言——自定义类型之枚举

    前言 本文介绍自定义类型中的枚举 一、枚举 枚举,通俗来讲就是一一列举 要注意枚举的枚举常量是有限个数 例如,三原色:红黄蓝;性别:男、女、保密;…… 二、定义与声明 #define _CRT_SECURE_NO_WARNINGS...2.防止了命名污染(封装) 3.与define宏定义相比较: ①便于调试; 【用define定义的值不能调试,因为define是在程序预处理阶段就将代码进行改变了,而调试是在程序生成.exe可执行程序时才能进行调试...,因此不能对宏定义进行调试,而枚举可以被调试】 ②枚举类型类型检查更加严谨(C语言中体现不多,但是C++会体现); 【只能拿枚举常量给枚举变量赋值才不会出现类型差异】 ③使用更方便,一次可以定义多个变量...,用define就得一个一个定义。...---- 总结 本文主要介绍了自定义类型中的结构体类型的相关知识,希望这篇文章对你理解结构体有所帮助。

    35120

    C语言定义数据类型

    ,是C语言自己的类型 对于一些复杂对象,光用内置函数是不够的。...复杂类型(自定义类型)-结构体、枚举、联合体。 1.结构体的声明 结构体的基础知识:结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。...4.如果嵌套结构体的情况,嵌套的结构对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。 为什么存在内存对齐?...(->是C语言C++语言的一个运算符,叫做指向结构体成员运算符,用处是使用一个指向结构体或对象的指针访问其内成员。)...联合是一种特殊的自定义类型,这种自定义类型的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)。

    40410

    初识C语言·自定义类型(2)

    1 结构体的声明和定义 什么是结构?...结构也就是元素的集合,在C语言里面,结构体里面的可以有多个变量,类似于集合中的元素,结构体里面的元素被叫做成员变量,成员变量可以是不同类型的多个变量,那么创建好结构体之后,定义的就是结构体变量,那么结构体的创建用到的是关键字...iii) 结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的整数倍 iv) 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构 体的整体...⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。...实际写代码的时候,我们着重将同一类型的放一起,浪费的空间就没有那么多。

    9110

    C语言——自定义类型之前言

    前言 我们都知道C语言有内置类型,例如:int char short……等等。 今天引入一个新的类型——自定义类型 一、为什么要有自定义类型? 因为内置类型不能全面的描述现实中的一些复杂对象。...结构体、枚举、联合 三、要注意的点 1.这些自定义类型本质上都是一种数据类型,所以在定义和声明自定义类型时不能对他们的成员变量进行初始化; 2.对于自定义类型的用法大致也与内置类型相同,用自定义类型定义的变量在函数外部...(即,没有在{}里面)就是全局变量;用自定义类型定义的变量在函数内部(即,在{}里面)就是局部变量。...具体的例子在后续专门介绍某个自定义类型时会专门讲解。 3.类型就相当于图纸,而根据类型创建的变量,就是通过这个图纸建造出的房子。...所以类型定义不会在内存中开辟空间,而变量的创建需要在内存中开辟空间。 总结 本文主要是对于自定义类型进行一个初步的引入,具体的内容请看同系列的文章。

    16140

    初识C语言·自定义类型(1)

    union Un { int a; char c; int i; }un; struct St { int a; char c; int i; }st; int main() { printf...union Un1 { char c[5]; int i; }; union Un2 { short c[7]; int i; }; int main() { printf("%zd\n",...4 枚举类型类型的声明 现实生活中比如星期1到星期7,性别,三原色,我们都是可以一一列举的,这就是枚举,将有限个数的元素一一列举出来。...enum Color clr = Blue; 像这样,但是在C语言里面是可以用整数给枚举常量赋值的,c++里面是不可以的,因为c++的类型检查比较严格,会认为这是两种不同的类型不能进行赋值。...和#define定义的标识符⽐较枚举有类型检查,更加严谨。 3. 便于调试,预处理阶段会删除 #define 定义的符号 4. 使⽤⽅便,⼀次可以定义多个常量 5.

    7210

    C语言】自定义类型:结构体

    结构体类型的声明 结构体是一种类型,类似于 int、char、double 等,只不过结构体类型是一种自定义类型。 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。...结构体的自引用 在结构体中包含一个类型为该结构体本身的成员是否可以呢? 比如,定义一个链表的节点,在这个节点处能够找到下一个节点的位置及其数据。...如果嵌套了结构体的情况,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体中成员的对齐数)的整数倍。 练习: 4.2. 为什么存在内存对齐?...位段的成员必须是 int、unsigned int 或 signed int,在C99中位段成员的类型也可以选择其他类型。 位段的成员名后边有一个冒号和一个数字。...(16位机器最大16,32位机器最大32,写成27,在16位机器会出现问题) 位段中的成员在内存中从左向右分配,还是从右向左分配,标准尚未定义

    7810

    c语言】轻松拿捏自定义类型

    前言 在c语言当中,除了内置的数据类型之外,还有自定义类型,它能够让我们更加方便、灵活地实现各种功能。今天我们主要来学一学三种自定义类型:结构体、联合体和枚举类型。...一、结构体 1.结构体类型定义和使用 1.1 结构体类型声明 结构体可以含有多个结构成员,成员的类型可以不同。...我们可以看到,这个结构体的成员变量中,有一个变量的类型是结构体本身。这就导致这个结构体是无限嵌套的,它所占的内存大小不可知。所以这种写法是错误的。...4.嵌套结构体的情况:则内层的结构体要对齐到自己成员中最大对齐数的整数倍处;结构体的总大小为结构成员中最大对齐数的整数倍(结构成员包含内层结构体的成员)。...4.使用方便,一次可以定义多个相关的变量 5.枚举类型是有作用域的,而宏常量没有,可以再某个函数体内单独使用 总结 今天咱们学习了三种自定义类型:结构体、联合体和枚举,以及它们的定义方式

    10810

    C语言---自定义类型:结构体

    结构体 自定义类型:结构体、联合体、枚举 结构是一些值的集合,这些值成为成员变量,结构的每个成员可以是不同类型的变量 //描述一本书:书名、作者、定价、书号 //结构体类型---类似于整型、浮点型...结构体需要用大括号进行初始化,因为结构体里面不只一个值 //初始化的时候我们是根据成员进行初始化的 //下面的初始化是按照成员顺序进行初始化的 struct Book b1 = {"鹏哥c语言...b1.id); printf("%s %s %f %s\n", b2.book_name, b2.author, b2.prince, b2.id); return 0; } //鹏哥c语言...根据规则4 如果嵌套了结构体的情况。...这个是不确定的 c语言并没与规定这个方向 那么我们假设从右到左 1 2 3 4 5 6 7 8---这里表示的是比特位的位置 b b b b a a a

    4910

    c语言定义函数和声明函数_C语言中用户定义函数的类型

    c语言定义函数和声明函数 There can be 4 different types of user-defined functions, they are: 可以有4种不同类型的用户定义函数,它们是...这是最好的类型,因为这使函数完全独立于输入和输出,并且仅在函数体内定义了逻辑。...C语言还允许嵌套函数,即在另一个函数体内使用/调用一个函数。 使用嵌套函数时必须小心,因为它可能导致无限嵌套。...同样,在C语言中还有许多递归应用。 进入程序部分,使用递归查找更多程序。...翻译自: https://www.studytonight.com/c/type-of-functions-and-recursion.php c语言定义函数和声明函数 发布者:全栈程序员栈长,转载请注明出处

    2.6K20
    领券