• 枚举

枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明:

  enum 枚举类型名字 {名字0,名字1,。。。,名字n};

枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为它们就是常量符号,它们的类型是int,值则依次从0到n。

  如:enum color{red,yellow,green};

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

当需要一些可以排列起来的常量值时,定义枚举的意思就是给这些常量值名称。

枚举量可以作为值;

枚举类型可以加上enum作为类型;但实际是以整数来计算和输入输出的。

#include<stdio.h>
enum color{ red, yellow, green,Numcolors};//此处Numcolors为小套路,数值刚好等于定义的枚举量,可以定义数组,遍历数组等使用。
void f(enum color c);//此处enum必须带上
int main(void)
{
enum color t = red;//枚举类型可以加上enum作为类型
scanf("%d",&t);
f(t); return ;
} void f(enum color c)
{
printf("%d\n%,c);
}

枚举量

声明枚举量的时候可以指定值,如

  

enum COLOR {RED = , YELLOW,GREEN = };//RED = 1是从1开始的,不是从0
//YELLOW =2
//GREEN = 5

枚举只是int,即使给枚举类型的变量赋不存在的值,也没有任何warning和error。

虽然枚举类型可以当做类型用,但是很少用。

如果有意义上排比的名字,用枚举比用const int方便。

枚举比宏好,因为枚举有int类型。

  •  结构
#include<stdio.h>
int main(int grc,char *grv[])
{
struct date {
int month;
int day;
int year;
};
struct date today;
today.month = ;
today.day = ;
today.year = ; printf("Today's date is %i-%i-%i\n",today.month,today.day,today.year); return ;
}

和本地变量一样:在函数内部声明的结构变量只能在函数内部使用;在函数外声明的结构变量可以在所有函数使用。

所以通常在函数外部声明结构变量,这样可以在多个函数使用。

结构变量的初始化

struct date day = {,,};//第一种初始化方法
struct Thismonth = {.month = ,.year = };//第二种初始化方法。未指定为0

结构变量的成员

结构和数组有点像

数组用【】运算符和下标访问其成员

结构用 .运算符和名字访问其成员

  today.day

要访问整个结构,直接用结构变量的名字

对于整个结构,可以赋值,取地址,也可以传递给函数参数

p1 = (struct point){5,10};  ----> p1.x = 5; p2.y = 10;

p1 = p2;  ---->相当于p1.x = p2.x; p1.y = p2.y

C语言学习笔记--枚举&结构体的更多相关文章

  1. c语言学习笔记之结构体存储

    今天讲讲结构体存储问题 首先,结构体简单说是对不同类型的封装,一开始我们可能会想结构体在内存中的存储的大小是直接元素的和 例如 我们可能会觉得是 结构体大小=int(4个字节)+ short(2个字节 ...

  2. C语言学习笔记10-结构体、枚举、联合体

    C语言学习笔记10-结构体.枚举.联合体    待传

  3. contiki学习笔记---process结构体

    process,字面意义,进程,看看它的结构 struct process { struct process *next; #if PROCESS_CONF_NO_PROCESS_NAMES #def ...

  4. C#学习笔记之结构体

    1.概述 结构是一种与类相似的数据类型,不过它较类更为轻量,一般适用于表示类似Point.Rectangle.Color的对象.基本上结构能办到的类全都能办到,但在某些情况下使用结构更为合适,后面会有 ...

  5. 《PHP7底层设计与源码实现》学习笔记2——结构体对齐

    书里给了一段代码,假如有个结构体如下: struct test {     char a;     int b;     long c;     void* d;     int e;     cha ...

  6. c语言学习笔记 - 枚举类型

    今天学习了c语言的枚举类型的使用,可能是PHP里没使用过,开始看的时候还是觉得有点怪,后来做了下例子才理解,这里做个笔记记录一下. #include <stdio.h> enum anim ...

  7. 【C#学习笔记】结构体使用

    using System; namespace ConsoleApplication { struct _st { public string name; public int age; } clas ...

  8. Go语言学习笔记十: 结构体

    Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...

  9. C#学习笔记_12_枚举&结构体

    12_枚举&结构体 枚举 是一种数据类型 适用于某些取值范围有限的数据 语法: [访问权限修饰符] enum 枚举名 { 枚举值 } 枚举名遵循大驼峰命名法 枚举一般情况下是和switch c ...

随机推荐

  1. Java 中的泛型详解-Java编程思想

    Java中的泛型参考了C++的模板,Java的界限是Java泛型的局限. 2.简单泛型 促成泛型出现最引人注目的一个原因就是为了创造容器类. 首先看一个只能持有单个对象的类,这个类可以明确指定其持有的 ...

  2. Hard 随机选择subset @CareerCup

    算法同上题 package Hard; import CtCILibrary.AssortedMethods; /** * Write a method to randomly generate a ...

  3. 遭遇多线程bug (1)

    某些用户,机器重启后,到第三方服务器的连接起不来,而到我们自己服务器的连接就没事. 如果连接由于网络或其他原因fail掉,过一定时间后应该会重新尝试建立连接的. 测试组做初步调查,他们能在本地环境复现 ...

  4. OpenGL ES2.0基础入门

    1.OpenGL ES 1.x渲染管线(又称为渲染流水线) (1).基本处理: 基本处理主要是设定3D空间中物体的顶点坐标.顶点对应的颜色.顶点的纹理坐标等属性,并且指定绘制方式. 常见的绘制方式有: ...

  5. Visual studio 2008 的语法高亮插件 NShader

    前段时间一直在使用matlab,今天需要使用vs2008,而用惯了matlab,习惯了其中一项选中变量高亮的设置,突然回来使用VS,感到各种不适应,顿时想到了一个词:矫情 呵呵,于是在网上找各种插件, ...

  6. android 用代码画虚线边框背景(转)

    1.虚线画效果,可以使用Android中的xml来做. 2.直接上代码: <RelativeLayout android:id="@+id/coupon_popup" and ...

  7. 零基础学习云计算及大数据DBA集群架构师【企业级运维技术及实践项目2015年1月29日周五】

    LNMP/LEMP项目搭建 { 项目框架 # Linux_____WEB_____PHP_____DB # rhel7_____apache__-(libphp5.so)-__php__-(php-m ...

  8. SPOJ 181 - Scuba diver 二维背包

    潜水员要潜水,给出n个气缸(1<=n<=1000),每个气缸中有氧气量为ti,氮气量为ai,气缸重量为wi(1<=ti<=21,1<=ai<=79,1<=wi ...

  9. 当ViewPager嵌套在ScrollView/ListView里时,手势冲突如何处理?

    有时我们需要将ViewPager嵌套在其他已经含有手势动作的ViewGroup里,如ScrollView,ListView时,会造成手势冲突,如表现为ViewPager向左划时,不小心向上移动了一点距 ...

  10. codevs1002搭桥(建图+Prim)

    /* 先来个灌水法 然后建图跑最小生成树 注意观察题目中的规则 a[1][i]!=a[1][j]&&abs(a[2][i]-a[2][j])<=1 建图的时候可以每一个建筑物都看 ...