----------------------------------------------------------我是一条划分线----------------------------------------------------------

————声明结构的形式————
*第一种
struct point{
    int x;
    int y;
    int z;
};
struct point p1,p2;//定义两个结构变量

*第二种
struct {
    int x;
    int y;
    int z;
}p1,p2;
//只定义了p1和p2这两个结构变量

*第三种 常用
struct point{
    int x;
    int y;
    int z;
}p1,p2;
//同时定义了结构名和结构变量

————结构的初始化————
struct point p1={10,5,6};//依次赋值
struct point p2={.x=5,.z=6};//没有给y赋值 自动填0

————结构成员————
* 结构的成员可以是不同类型的 数组成员必须是同一类型的
* 结构利用.运算符和名字访问成员 数组用[]运算符和下表访问成员

————结构运算————
p1=(struct point){5,10}; //相当于 p1.x=5;p2.y=10;
p1=p2; //相当于p1.x=p2.x;p1.y=p2.y;
* 数组无法做这两种运算

————结构指针————
* 和数组不同,结构变量的名字并不是结构变量的地址 必须使用&运算符
* struct date*pDate = &today;

————结构作为函数参数————
int numberofdays(struct date d)
* 整个结构可以作为参数的值传入函数
* 这时候在在函数内新建一个结构变量,并复制调用者的结构的值
* 也可以返回一个结构
* 和数组完全不同

————输入结构————
* 没有直接的方式可以一次scanf一个结构
* 当作参数传值的问题 返回的解决方案
方法①创建一个临时的结构变量,然后把这个结构返回给调用者
方法②结构指针作为参数(数组不用指针,在子函数中直接就可以操作数组中的值,特别方便)

struct date{
    int moth;
    int day;
    int year;
}myday;

struct date *p = &myday;
(*p).month = 12;//第一种 稍微麻烦一点
p->month = 12; //第二种
————结构数组————
* 结构变量的类型可以是数组
struct date dates[100];
struct date dates[]={ {1,2,3},{4,5,6} };//最外层大括号
* 结构变量的类型可以是结构
strcut dateandtime{
    struct date sdate;
    struct date time;
};
//结构中可以有结构,结构数组等,都是可以嵌套的。

----------------------------------------------------------我是一条划分线----------------------------------------------------------

——————自定义数据类型——————
* C语言提供了一个 typedef 功能来声明一个已有的数据类型的新名字
比如 typedef int Length;使Length成为int的别名
//int a 等价于 Length a
———————应用例1————————
* typedef struct Adate{
    int month;
    int day;
    int year;
}Date;

//Date是新名字 不是一个结构体实例, Date等价于 struct Adate
———————应用例2————————
* typedef struct{
    int month;
    int day;
    int year;
}Date;
//如果没有typedef 这里就是一个没有名字的结构体struct 他有一个实例叫Date;
———————应用例3————————
typedef char* Strings[10]; //Strings是10个字符串的数组

----------------------------------------------------------我是一条划分线----------------------------------------------------------

——————联合 union——————
*存储
    所有的成员共享一个空间
    同一时间只有一个成员是有效的
    union的大小是其最大的成员
*初始化
    对第一个成员做初始化

+:
在内存中的整数是以低位在前原理。
0x04D2在内存中就是 D2 04 00 00

----------------------------------------------------------我是一条划分线----------------------------------------------------------

* 枚举是一种用户定义的数据类型,通常枚举类型名字不真的使用,要用的是在大括号里的名字,因为它们就是常量符号。
* 枚举类型只能是int,值从零依次到n;

* enum 枚举类型名字{名字0,...,名字n}

例如 enum colors{red,yellow,green};

创建了三个常量,red的值是0,yellow是1,green是2。

套路:自动计数的枚举 enum1.png

* 声明枚举量的时候可以指定值
 * enum COLOR{RED=1,YELLOW,GREEN=5};

printf("%d",GREEN)   //结果为5
printf("%d",YELLOW)   //结果为2
枚举量是 n n+1 n+1+1 n+1+1+1 这样子排列的

* 给枚举赋不存在的值

* 人们在用枚举的时候是为了定义符号量,(给符号一个正数值),而不会把它当作枚举类型来使用,因为很(bu)少(hao)用。

C语言进阶——结构体,联合,枚举的更多相关文章

  1. C#语言基础——结构体和枚举类型

    结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...

  2. C语言回顾-结构体、枚举和文件

    1.构造类型 根据已经定义的一个或多个数据类型用构造的方法来定义. 分为:数组.结构体和共用体 2.结构体 struct 结构体名{ 成员列表: }; 1)结构体定义完成以后,计算机不会给结构体分配存 ...

  3. C语言-1.结构体,2.枚举,3.typedef,4.预处理指令的概念,5.条件编译

    1. 结构体数组 定义:由若干个相同类型的结构体变量组成的有序的集合. 定义格式: 1) 定义结构体的同时定义结构体数组 struct Car{ int lunzi; int speed; }cars ...

  4. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  5. C语言中结构体对齐问题

    C语言中结构体对齐问题 收藏 关于C语言中的结构体对齐问题 1,比如: struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B; ...

  6. C语言中结构体赋值问题的讨论

    今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...

  7. C语言的结构体和C++结构体的区别

    关于C++中声明结构体中需要使用构造器创建实例对象的语法: <C++的结构体构造方法的基本概念:结构体的构造方法需要和结构体的名字相同,并且无返回值,也不要void关键字,这样的方法就是构造器的 ...

  8. 01.C语言关于结构体的学习笔记

    我对于学习的C语言的结构体做一个小的学习总结,总结如下: 结构体:structure 结构体是一种用户自己建立的数据类型,由不同类型数据组成的组合型的数据结构.在其他高级语言中称为记录(record) ...

  9. c# 函数练习;结构体、枚举类型

       * 结构体 1.就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 注意:枚举类型和结构体都属于值类型. 2.定义的方法: struct student { public in ...

随机推荐

  1. 2019.12.15 QLU and SNDU期末联赛

    题目列表: 1582.柳予欣的舔狗行为 1587.柳予欣的女朋友们在分享水果 1585.柳予欣和她女朋友的购物计划 1579.FFFFFunctions 1588.Zeckendorf 1586.柳予 ...

  2. IDEA + Spring boot 单元测试

    1. 创建测试类 打开IDEA,在任意类名,任意接口名上,按ctrl+shift+t选择Create New Test image 然后根据提示操作(默认即可),点击确认,就在项目的/test/jav ...

  3. Linux 内核kobject 层次, kset, 和子系统

    kobject 结构常常用来连接对象到一个层级的结构中, 匹配正被建模的子系统的结构. 有 2 个分开的机制对于这个连接: parent 指针和 ksets. 在结构 kobject 中的 paren ...

  4. CodeForces - 1186 C. Vus the Cossack and Strings (异或)

    Vus the Cossack has two binary strings, that is, strings that consist only of "0" and &quo ...

  5. 2018-8-10-C#-6.0-字符串-String-Interpolation

    title author date CreateTime categories C# 6.0 字符串 String Interpolation lindexi 2018-08-10 19:16:52 ...

  6. Docker 安装nginx 与端口映射

    1. 拉取镜像(网易云docker镜像仓库) docker pull hub.c.163.com/library/nginx:latest 2. 运行nignx,并做端口映射 -d 后台运行  -p映 ...

  7. apk混淆打包和反编译(转)

    前面有人写过了,我就直接引用了,大家就不乱找了.以后有问题再继续更新. 一.混淆打包.编译 1.Android 代码混淆.http://blog.csdn.net/zjclugger/article/ ...

  8. HDU1172猜数字 [模拟]

    1.题意 任务是猜一个四位数,每次尝试后会给出这次猜中了几个数字和猜中了几个位置,求能否根据尝试的记录给出答案 2.分析 数据给出查询次数和每次查询的数及其有几个数和几个位置符合,值得注意的是,猜对的 ...

  9. 2020 中国 .NET 开发者调查问卷

    随着.NET Core 3.1的发布,国内2019 中国.NET开发者峰会在上海的成功举办.从技术采用生命周期的角度来说,随着.NET Core 3.1的发布,有越来越多的厂商开始采用.NET Cor ...

  10. MySQL基础篇(03):系统和自定义函数总结,触发器使用详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.系统封装函数 MySQL 有很多内置的函数,可以快速解决开发中的一些业务需求,大概包括流程控制函数,数值型函数.字符串型函数.日期时间函数 ...