枚举类型的使用方法

  • 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\n",c); // 0
c = BLUE;
printf("c = %d\n",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\n",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\n",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语句之后定义

最新文章

  1. neo4j-jersey分嵌入式和服务式连接图形数据库
  2. 使用shell/python获取hostname/fqdn释疑
  3. CheckLogin
  4. 有关jquery checkbox获取checked的问题
  5. form表单只提交数据而不进行页面跳转的解决方案
  6. HyperMesh生成Flac3D的剖分网格
  7. android开发之路09(浅谈SQLite数据库01)
  8. vi命令提示:Terminal too wide
  9. WM_SYSCOMMAND消息命令整理 good
  10. LNK快捷方式漏洞利用方式 exp制作教程
  11. 第十六篇 基于Bootstarp 仿京东多条件筛选插件的开发(展示上)
  12. spring MVC 乱码问题
  13. nginx正向代理和反正代理区别
  14. UE4 Virtual Reality Input输入配置表导入
  15. 谈谈逆向android里面的so
  16. python数学第五天【常用概率分布】
  17. 图片转base64上传,视频同理。
  18. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(3)- 异常
  19. android&amp;sqlsever
  20. Eclipse 创建maven项目 报错 one or more constraints have not been satisfied

热门文章

  1. 解决ubuntu10.04不能上网
  2. POJ3685 Matrix —— 二分
  3. Oracle:通过dbv查看数据文件是否有坏块
  4. 在msys里进行复制和粘贴操作
  5. Darwin Streaming Server 核心代码分析
  6. vue 使用font-awesome 只需两步
  7. mfc设置半透明对话框
  8. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 04. 中间件
  9. 任务46:Identity MVC:登录逻辑实现
  10. html中target的用法