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语言 ...
随机推荐
- bzoj5328: [Sdoi2018]物理实验
果然我还是太菜了,爆了一天才过....隔壁肉丝都不知道喊了多少句哎╮(╯▽╰)╭我又A了什么傻逼题(然鹅就是wf和国集的题QWQ) 其实这个题就是个裸题,但是我就是不会... 这个题第一步就是明显的旋 ...
- bzoj4105: [Thu Summer Camp 2015]平方运算
填坑 我不知道怎么算的,但是所有环的LCM数不会超过60 然后用线段树维护这个东西,每个节点记录子树内的循环节 没到循环节的暴力枚举 复杂度是nlogn再乘以循环节长度 #include<cst ...
- vue 更改头像功能实现
——————– 如上图所示:需要完成的功能是点击更改头像,获取本地文件库,选择图片后将原始图片替换.这里我就直接用html文件引入vue来简单实现在这功能,代码如下: HTML: <div i ...
- Simple JavaScript Inheritance
1. [代码]Simple JavaScript Inheritance (function(){ var initializing = false, fnTest = /xyz/.test ...
- codeforces 436A. Feed with Candy 解题报告
题目链接:http://codeforces.com/contest/436/problem/A 题目意思:给出 n 颗只有两种类型:fruit 和 caramel的candies,这些candies ...
- Oracle安装:silent安装方式
之前一直是通过图形界面来安装oracle,这次上机考试说用silent (静默)形式安装.一点头绪都没有,虽然当时提供了oracle官方文档. 遂查找资料,安装了一下: 一.准备工作: 1.系统参数调 ...
- SPOJ:PATHETIC STRINGS(分配问题&贪心)
Problem statement: A string is said to be “PATHETIC” if all the characters in it are repeated the sa ...
- [Java] 读取文件
1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如 ...
- bzoj3143游走——期望+高斯消元
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3143 只需算出每条边被经过的概率,将概率从小到大排序,从大到小编号,就可得到最小期望: 每条 ...
- (水题)洛谷 - P1149 - 火柴棒等式
https://www.luogu.org/problemnew/show/P1149 一开始还分类重复了.在非0的dfs中居然赋值了0,脑残得一笔. 其实就按 $lead0$ 分类就好了, $lea ...