C语言学习笔记--enum和sizeof关键字

1.enum关键字

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

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

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

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

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

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

#include <stdio.h>
enum //无名枚举,用于定义常量
{
    ARRAY_SIZE = 10 //定义数组大小,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 = 0;
    for(i=0; i<ARRAY_SIZE; i++)
    {
        array[i] = i + 1;
    }
}
void PrintArray(int array[])
{
    int i = 0;for(i=0; i<ARRAY_SIZE; i++)
    {
        printf("%d\n", array[i]);
    }
}
int main()
{
    enum Color c = GREEN; //定义变量 c 并初始化为 GREEN
    int array[ARRAY_SIZE] = {0};
    PrintColor(c);
    InitArray(array);
    PrintArray(array);
    return 0;
}

2.C语言中的sizeof关键字

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

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

#include <stdio.h>
int f()
{
    printf("I like programming!\n");
    return 0;
}
int main()
{
    int var = 0;
    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 0;
}
时间: 2024-10-29 19:09:38

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

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

1.const关键字 (1)const 修饰的变量是只读的,它不是真正的常量,本质还是变量,只是告诉编译器不能出现在赋值号左边! (2)const 修饰的局部变量在栈上分配空间 (3)const 修饰的全局变量在全局数据区分配空间(vc.gcc 会将其放入常量区,bcc 放入全局数据区) (4) const 只在编译期有用,在运行期无用 #include <stdio.h> const int g_cc = 2;//bcc 下存储在全局数据区,可修改. //vc.gcc 将其存储在常量区,不可

Go语言学习笔记(二) [变量、类型、关键字]

日期:2014年7月19日 1.Go 在语法上有着类 C 的感觉.如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔.一般情况下,你不需要分号. 2.Go 同其他语言不同的地方在于变量的类型在变量名的后面.例如:不是,int a,而是 a int.当定义了一个变量,它默认赋值为其类型的 null 值.这意味着,在 var a int后,a 的 值为 0.而 var s string,意味着 s 被赋值为零长度字符串,也就是 "". 3.Go语言的变量声明和赋值 在Go中使

JavaScript--基于对象的脚本语言学习笔记(三)

事件处理器 1.一个数据校验表单的例程 <html> <head> <title>js练习</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript"> String.prototype.trim=function(){ r

go语言学习笔记

go语言学习笔记 go语言学习笔记(初级) 最近一直在学习go语言,因此打算学习的时候能够记录 一下笔记.我这个人之前是从来没有记录笔记的习惯, 一直以来都是靠强大的记忆力去把一些要点记住. 读书的时候因为一直都是有一个很安静和很专心的环境, 因此很多事情都能记得很清楚,思考的很透彻.但是随着 年纪不断增加,也算是经历了很多的事情,加上工作有时会让人 特别烦闷,很难把心好好静下来去学习,去思考大自然的终极 奥秘,因此需要记录一些东西,这些东西一方面可以作为一种自我激励 的机制,另一方面,也算是自

JavaScript--基于对象的脚本语言学习笔记(一)

1.两种嵌入js的方式 使用javascript前缀构建url:<a href="javascript:alert('运行JavaScript..')">运行js</a> js脚本放在<style></style>之间: <style type="text/javascript"> alert("运行JavaScript..") </script> 2.如果没有声明变量直接使

Go语言学习笔记(三) [控制结构、内建函数]

日期:2014年7月21日 一.控制结构 1.Go中,只有几个控制结构,它没有do或者while循环,有for,灵活的switch语句和if,在switch中可以接受像for那样可选的初始化语句,另外Go中还提供了类型选择和多路通信转接器的select.Go的控制结构的语法和C相比有所不同,它不需要圆括号,但语句体必须总是包含在大括号内. 2.控制结构语法 1)if-else (1)if后紧跟单个条件 例如:if x > 0 {   //{必须和if在同一行,这是Go语法规定的,如果换行写,编译

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

Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. Go语言中Map的写法比Java简单些,比Python繁琐. 定义Map var x map[string]string x : = make(map[string]string) 写法上有些奇怪,map为关键字,右侧中括号内部为key的类型,中括号外部为value的类型.一般情况下使用逗号或者冒号

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

Perl语言学习笔记 6 哈希

1.哈希的键是唯一的,值可以重复! 2.访问哈希元素 $hashname{"$key"};#哈希为大括号,数组为方括号,键为字符串 $family_name{"fred"} = "firstd";#给哈希元素赋值 3.哈希键支持任意表达式 $foo = "na"; $family_name{$foo."me"};#获取$family_name{"name"}对应的值 4.访问整个哈希 %