枚举类型的使用方法
- enum是C语言中的一种自定义类型
- enum值可以根据需要自定义整形值
- 第一个定义的enum值默认为0
- 默认情况下的enum值是在前一个定义值得基础上加1
- enum类型的变量只能去定义时的离散值
例子1:enum的使用
#include<stdio.h>
int main()
{
enum Color
{
GREEN,
RED = 2,
BLUE
};
enum Color c = GREEN;
printf("c = %d
",c); // 0
c = BLUE;
printf("c = %d
",c); // 3
return 0;
}
枚举类型的特殊含义
enum中定义的值是C语言中真正意义上的常量,在工程中enum多用于定义整形常量
例子2:enum的使用
#include<stdio.h>
int main()
{
enum
{
ARRAY_SIZE =10
};
int array[ARRAY_SIZE] = {0};
int i = 0;
for(i=0;i<ARRAY_SIZE;i++)
array[i] = i + 1;
for(i=0;i<ARRAY_SIZE;i++)
printf("array[i] = %d
",array[i]);
return 0;
}
sizeof关键字
- sizeof是编译器的内置指示符
- sizeof用于计算类型或变量所占用内存大小
- sizeof的值在编译期就已经确定
注意:
- sizeof是C语言的内置关键字而不是函数
- 在编译过程中所有的sizeof将被具体的数值所替换
- 程序的执行过程与sizeof没有任何关系
例子3:sizeof的本质
#include<stdio.h>
int main()
{
int var = 0;
int num = sizeof(var++);
printf("var = %d,num = %d
",var,num); //0 4
return 0;
}
typedef的意义
如果面试官问typedef的具体的意义,你怎么回答?
如果回答typedef用于定义一种新的类型。 X
typedef用于给一个已经存在的数据类型起个别名,typedef本质上不能产生新的类型
typedef重命名的类型:
- 可以在typedef语句之后定义
- 不能被unsigned和signed修饰
用法:
typedef type new_name;
例子4:typedef例子
#include<stdio.h>
typedef int Int32;
struct _tag_point
{
int x;
int y;
};
typedef struct _tag_point Point;
typedef struct
{
int len;
int array[];
}SoftArray;
typedef struct _tag_list_node ListNode;
struct _tag_list_node
{
ListNode* next;
};
int main()
{
Int32 i = -100;
// unsigned Int32 ii= 0;
Point p;
SoftArray* sa = NULL;
ListNode* node = NULL;
return 0;
}
小结
- enum用于定义离散值类型
- enum定义的值是真正意义上的常量
- sizeof是编译器的内置指示符
- sizeof不参与程序的执行过程
- typedef用于给类型起一个别名,别名的类型可以在typedef语句之后定义