1.enum关键字

C语言中enum关键字用来定义枚举类型

(1)enum 是 C 语言中的一种自定义类型
(2)enum 值是可以根据需要自定义的的整型值
(3)第一个定义的 enum 值默认为 0

(4)默认情况下的 enum 值是在前一个定义值的基础上加 1

(5)enum 类型的变量只能取定义时的离散值

enum Color
{
GREEN, //默认 GREEN==0;
RED= , //自定义 RED==2;
BLUE //默认情况,是在前一个的基础上加 1,即 BLUE==3
};
enumColor c =GREEN;//定义 c 变量,并初始化为 GREEN
printf("%d\n",c);

enum 中定义的值是 C 语言中真正意义上的常量 。在工程中 enum 多用于定义整型常量

#include <stdio.h>
enum //无名枚举,用于定义常量
{
ARRAY_SIZE = //定义数组大小,ARRAY_SIZE 是常量,运行时无
法改变
};
enum Color
{
RED = 0x00FF0000,
GREEN = 0x0000FF00,
BLUE = 0x000000FF //注意,后面没分号
};
//打印,参数为枚举类型
void PrintColor(enum Color c)
{
switch( c )
{
case RED:
printf("Color: RED (0x%08X)\n", c);
break;
case GREEN:
printf("Color: GREEN (0x%08X)\n", c);
break;
case BLUE:
printf("Color: BLUE(0x%08X)\n", c);
break;
}
}
//初始化数据
void InitArray(int array[])
{
int i = ;
for(i=; i<ARRAY_SIZE; i++)
{
array[i] = i + ;
}
}
void PrintArray(int array[])
{
int i = ;for(i=; i<ARRAY_SIZE; i++)
{
printf("%d\n", array[i]);
}
}
int main()
{
enum Color c = GREEN; //定义变量 c 并初始化为 GREEN
int array[ARRAY_SIZE] = {};
PrintColor(c);
InitArray(array);
PrintArray(array);
return ;
}

2.C语言中的sizeof关键字

(1)sizeof 是编译器的内置指示符
(2)sizeof 用于计算类型或变量所占的内存大小

(3)sizeof 的值在编译期就己经确定,在编译过程中所有的 sizeof 将被具体的数值所替换 ,程序的执行过程与 sizeof 没有任何关系 。

#include <stdio.h>
int f()
{
printf("I like programming!\n");
return ;
}
int main()
{
int var = ;
int size = sizeof(var++); //该行在编译期被替换为 int size =4;
//所以运行时,不存在 var++之类的代码了
printf("var = %d, size = %d\n", var, size);
size = sizeof(f()); //该行在编译期被替换为 size = sizeof(函数的返回值类型) =4;
//即最终代码没有 f()函数的调用,也就不会输出 f()里面的 printf
printf("size = %d\n", size);
return ;
}

参考资料:
www.dt4sw.com
http://www.cnblogs.com/5iedu/category/804081.html

C语言学习笔记--enum和sizeof关键字的更多相关文章

  1. C语言学习笔记--struct 和 union关键字

    1.struct关键字 C 语言中的 struct 可以看作变量的集合struct中的每个数据成员都有独立的存储空间. 结构体与柔性数组 (1)柔性数组即数组大小待定的数组 (2)C 语言中可以由结构 ...

  2. C语言学习笔记--const 和 volatile关键字

    1.const关键字 (1)const 修饰的变量是只读的,它不是真正的常量,本质还是变量,只是告诉编译器不能出现在赋值号左边! (2)const 修饰的局部变量在栈上分配空间 (3)const 修饰 ...

  3. Go语言学习笔记(1)——顺序编程

    Go语言学习笔记这一堆主要是<Go语言编程>(人民邮电出版社)的读书笔记.中间会穿插一些零碎的点,比如源码学习之类的.大概就是这样吧. 1. 顺序编程 1.1 变量 变量的声明: var ...

  4. GO语言学习笔记(一)

    GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...

  5. Go语言学习笔记十三: Map集合

    Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...

  6. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

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

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

  8. Go语言学习笔记三: 常量

    Go语言学习笔记三: 常量 定义常量 常量就是在声明后不能再修改的量. const x int = 100 const y string = "abc" const z = &qu ...

  9. Go语言学习笔记二: 变量

    Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...

随机推荐

  1. Struts2之ModelDriven的使用

    http://www.cnblogs.com/luoyanli/archive/2012/11/20/2778361.html 我们可以根据Action属性的不同将它分为两类:Field-Driven ...

  2. mysql中子查询更新,得用别名表

    通过查出最大id,来更新记录 update order set status = 'xx' where id in (select v.id from (select max(id) id from ...

  3. (转)AAC ADTS格式分析

    1,ADTS是个啥ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式记得第一做demux的时候,把AAC音频的ES流从FLV封装格式中抽出来送给 ...

  4. urllib2下载网页的三种方法

    1.最直接的方法 #-*- coding: utf-8 -*- import urllib2 #直接请求 response = urllib2.urlopen('https://www.baidu.c ...

  5. rails数据验证

    @user1 = :name => "zhou" 与 @user2 = :name=> "ZHOU" 在为保存之前都有可能通过第一关validate ...

  6. 3.11课·········异常语句与for循环重复

    异常语句try catch finally try//保护执行里面的代码段,若其中一句有错误,直接跳转到catch,不会管下面的内容 { Console.Write("请输入一个整数&quo ...

  7. 3.07课·········if分支语句

    语句分类:顺序语句,选择语句(分支语句),循环语句 分支语句:(一)if(表达式) //表达式返回值是True或False{}说明:1.表达式返回的是bool值:2.小括号和花括号后面不需要加分号. ...

  8. Oracle数据库体系结构(3)数据库进程

    一.Oracle进程概述 在oracle中进程分为用户进程(User Process).服务器进程(server process)和后天进程3种. 1.用户进程:当用户连接到数据库执行一个应用程序是, ...

  9. dedecms常用标签

    下面总结了58种常见的标签调用,包括关键描述调用.指定调用栏目.列表文章调用.频道栏目调用.当前栏目名称.栏目导航调用.模板路径调用.网站标题调用.友情链接调用.网站版权调用.网站备案调用.当前位置调 ...

  10. POJ 2831 Can We Build This One:次小生成树【N^2预处理】

    题目链接:http://poj.org/problem?id=2831 题意: 给你一个图,每条边有边权. 然后有q组询问(i,x),问你如果将第i条边的边权改为x,这条边是否有可能在新的最小生成树中 ...