enum,sizeof,typedef
枚举类型的使用方法
- 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语句之后定义
enum,sizeof,typedef的更多相关文章
- 第11课 - enum, sizeof, typedef 分析
第11课 - enum, sizeof, typedef 分析 1. enum介绍 (1)enum是C语言中的一种自定义类型,和struct.union地位相同,格式如下: // enum每个值的最后 ...
- C语言进阶——enum, sizeof, typedef 分析11
枚举类型的使用方法: enum是C语言的 一种自定义类型 enum值是可以根据需要自定义的整型值 第一个enum的值默认为0 默认情况下的enum值是在前一个定义值的基础上加 1 enum类型的变量只 ...
- enum sizeof typedef分析
1.枚举类型的使用方法 enum是C语言中的一种自定义类型 enum值是可以根据需要自定义的整型值 第一个定义的enum值默认为0 默认情况下的enum值是在前一个定义值的基础上加1 enum类型的变 ...
- enum与typedef enum
enum与typedef enum的用法 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是: #define MON 1#define T ...
- 李洪强iOS开发之 - enum与typedef enum的用法
李洪强iOS开发之 - enum与typedef enum的用法 01 - 定义枚举类型 上面我们就在ViewController.h定义了一个枚举类型,枚举类型的值默认是连续的自然数,例如例子中的T ...
- C语言--enum,typedef enum 枚举类型详解
原文:http://z515256164.blog.163.com/blog/static/32443029201192182854300/ 有改动 C语言详解 - 枚举类型 注:以下全部代码的执行环 ...
- 转:enum与typedef enum的用法
来自:http://blog.sina.com.cn/s/blog_817a5eb6010146ad.html 作者:于超峰 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#defi ...
- enum与typedef enum的用法
一,两者的用法 枚举类型定义用关键字enum标识,形式为: enum 标识符 { 枚举数据表 }:枚举数据(枚举常量)是一些特定的标识符,标识符代表什么含义,完全由程序员决定.数据枚举的顺序规定了枚举 ...
- 《C语言进阶剖析》课程目录
<C语言进阶剖析>学习笔记 本文总结自狄泰软件学院唐佐林老师的<C语言 ...
随机推荐
- HDU 1081:To The Max
To The Max Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- WAS:修改jsp编译器用JDK5.0
问题现象: 今天有现场反映,访问应用的个别页面报错,报错内容如下: 于是先查看其他现场,都是好的:根据报错信息,提示的意思是jsp解析不了. 结合上面2个情况,排除代码问题,应该是现场WAS环境问 ...
- windows下关闭指定端口服务,解决tomcat端口占用问题
http://blog.aizhet.com/Server/640.html 在windows下做java EE的开发时:搭建 Eclipse+tomcat的java web开发环境:在应用之中经常遇 ...
- 让振动器振动起来——Vibrator的使用
AndroidManifest.xml 获取系统权限 <uses-permission android:name="android.permission.VIBRATE"/& ...
- UIButton常见属性和方法
一.创建,两种方法: 1. 常规的 initWithFrame UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(10, 10, 8 ...
- I.MX6 MAC Address hacking
/************************************************************************** * I.MX6 MAC Address hack ...
- 【USACO 2006 November Gold】Corn Fields
[题目链接] 点击打开链接 [算法] 状压DP [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 12 #def ...
- FTOUR2 - Free tour II
传送门 题目翻译的很清楚……似乎点分治的题题目描述都非常简洁. 还是那个操作,一条路径要么全部在一棵子树中,要么经过当前的重心,所以考虑点分治. 首先dfs求出重心的每一棵子树中,有i个黑点的最长路径 ...
- nodejs QueryString模块 详解
QueryString模块 "QueryString" 模块用于实现URL参数字符串与参数对象的互相转换 此类一共包括4个方法: querystring.stringify(obj ...
- POJ 3419 Difference Is Beautiful (DP + 二分 + rmq)
题意:给n个数(n<=200000),每个数的绝对值不超过(10^6),有m个查询(m<=200000),每次查询区间[a,b]中连续的没有相同数的的最大长度. 析:由于n太大,无法暴力, ...