枚举类型的使用方法
·enum是C语言中的一种自定义类型
·enum值是可以根据需要自定义的整型值
·第一个定义的enum值默认为0
·默认的情况下enum值是在前一个定义值得基础上加1
·enum类型的变量只能去定义时的离散值
·enum中定义的值是C语言中真正意义上的常量
·在工程中enum多用于定义整型常量
补充:
"0x%08x"
0x为普通字符,输出的时候会原样输出为0x。
%08x为整型以16进制方式输出的格式字符串,会把后续对应参数的整型数字,以16进制输出。08的含义为,输出的16进制值占8位,不足部分左侧补0。
enum的使用 例子11-1:
include "stdio.h"
enum
{
ARRAY_SIZE = 10
};
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 = Blue;
int array[ARRAY_SIZE] = {0};
printcolor(c);
InitArray(array);
PrintArray(array);
return 0;
}
输出结果:
Color: Blue(0x000000FF)
1
2
3
4
5
6
7
8
9
10
sizeof关键字的用法
·sizeof是编译器的内置指示符
·sizeof用于计算类型或变量所占的内存大小
·sizeof的值在编译期就已经确定
·sizeof是C语言的内置关键字而不是函数
——在编译过程中所有的sizeof将被具体的数值所替换
——程序的执行过程与sizeof没有任何关系
sizeof的本质 11-2.c
sizeof不是函数不会因为程序的运行而运行,而是在编译的过程中就已经被具体的数值所替换,var++在程序里面得不到执行。
include "stdio.h"
int f()
{
printf("zhangyingli\n");
return 0;
}
int main()
{
int var = 0;
int size = sizeof(var ++);
printf("var = %d,size = %d\n",var,size);
size = sizeof(f()); //返回int类型的变量值
printf("size = %d\n",size);
}
输出结果:
var = 0,size = 4
size = 4
typedef的意义
·typedef用于给一个已经存在的数据类型重命名
·typedef本质上不能产生新的类型
·typedef重命名的类型
——可以在typedef语句之后定义
——不能被unsigned和signed修饰
include "stdio.h"
typedef int int32;
struct _tag_point
{
int x;
int y;
};
typedef struct _tag_point Point;
typedef struct
{
int length;
int array[];
}SoftArray;
typedef struct _tag_list_node ListNode;
//无论是先定义结构体还是先重命名类型,编译器都会认为将struct _tag_list_node重命名为ListNode
struct _tag_list_node
{
ListNode *next;
//编译器也会认为ListNode就相当于struct _tag_list_node
};
int main()
{
int32 i = -100;
//unsigned int32 ii = 0; //error
Point p;
SoftArray *sa = NULL;
ListNode *node = NULL;
return 0;
}
小结:
·enum用于定义离散型类型
·enum定义的值是真正意义上的常量
·sizeof是编译器的内置指示符
·sizeof不参与程序的执行过程
·typedef用于给类型重命名
-重命名的类型可以在typedef语句之后定义
狄泰课堂笔记