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