C语言学习笔记--枚举&结构体
- 枚举
枚举是一种用户定义的数据类型,它用关键字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语言学习笔记--枚举&结构体的更多相关文章
- c语言学习笔记之结构体存储
今天讲讲结构体存储问题 首先,结构体简单说是对不同类型的封装,一开始我们可能会想结构体在内存中的存储的大小是直接元素的和 例如 我们可能会觉得是 结构体大小=int(4个字节)+ short(2个字节 ...
- C语言学习笔记10-结构体、枚举、联合体
C语言学习笔记10-结构体.枚举.联合体 待传
- contiki学习笔记---process结构体
process,字面意义,进程,看看它的结构 struct process { struct process *next; #if PROCESS_CONF_NO_PROCESS_NAMES #def ...
- C#学习笔记之结构体
1.概述 结构是一种与类相似的数据类型,不过它较类更为轻量,一般适用于表示类似Point.Rectangle.Color的对象.基本上结构能办到的类全都能办到,但在某些情况下使用结构更为合适,后面会有 ...
- 《PHP7底层设计与源码实现》学习笔记2——结构体对齐
书里给了一段代码,假如有个结构体如下: struct test { char a; int b; long c; void* d; int e; cha ...
- c语言学习笔记 - 枚举类型
今天学习了c语言的枚举类型的使用,可能是PHP里没使用过,开始看的时候还是觉得有点怪,后来做了下例子才理解,这里做个笔记记录一下. #include <stdio.h> enum anim ...
- 【C#学习笔记】结构体使用
using System; namespace ConsoleApplication { struct _st { public string name; public int age; } clas ...
- Go语言学习笔记十: 结构体
Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...
- C#学习笔记_12_枚举&结构体
12_枚举&结构体 枚举 是一种数据类型 适用于某些取值范围有限的数据 语法: [访问权限修饰符] enum 枚举名 { 枚举值 } 枚举名遵循大驼峰命名法 枚举一般情况下是和switch c ...
随机推荐
- MapReduce多用户任务调度器——容量调度器(Capacity Scheduler)原理和源码研究
前言:为了研究需要,将Capacity Scheduler和Fair Scheduler的原理和代码进行学习,用两篇文章作为记录.如有理解错误之处,欢迎批评指正. 容量调度器(Capacity Sch ...
- MySQL删除重复记录的方法
参考网上的方法,总结了产出重复记录的方法,欢迎交流. 参考:http://www.cnblogs.com/nzbbody/p/4470638.html 方法1:创建一个新表临时储存数据 假设我们有一个 ...
- 根据IP地址获取IP的详细信息
<?php header('Content-Type:text/html; charset=utf-8'); function ip_data() { $ip = GetIP(); $url = ...
- myeclipse html乱码
myeclispe 中 html乱码 在页面的开头写上即可 <meta http-equiv="content-type" content="text/html; ...
- SpringMVC中文乱码
刚刚构建的SpringMVC项目,一般都是中文乱码的. 这时的工程就是一个JSP页面的事情,可以添加如下代码 <%@ page language="java" import= ...
- eclipse开发servlet应用,Tomcat无法访问jpg图片
今天遇到个奇怪的问题,我发现我放在tomcat的webapps文件夹项目下的jpg文件,浏览器无法访问: 以前没有遇到过这个问题,我知道肯定能访问的,因为以前做过相关应用,不知道问题出在哪. 后来我把 ...
- js星级评分点击星级评论打分效果--收藏--转载
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 关于IO学习的几个函数
这是最近学到的几个关于IO文件操作的几个小算法,今天总结出来. 1. 删除一个给定的目录,这上目录不为空目录,使用递归来实现 public void test04(File file) { File[ ...
- Android虚拟机GenyMotion
GenyMotion:需要VirtualBox,安装后可以选择机型,这个应该是Android for x86的一个改进版虚拟机,在原版的基础上针对不同机型用了和原机型同样的GUI,但是发现缺少了Goo ...
- MySQL无法登录服务器解决方法
提示:#2000 无法登录 MySQL 服务器 今天用本机装了个phpMyAdmin,版本3.4.8,想用它来连一台内网服务器上的Mysql,于是乎修改phpMyAdmin配置文件config.inc ...