struct,enum和uion

 1 #include <stdio.h>
 2
 3 struct struct_a
 4 {
 5     int a;
 6     int b;
 7 };
 8
 9 enum Weekday
10 {
11     Mon,
12     Tue,
13     sat,
14     sun
15 };
16
17 union bigend
18 {
19     int a;
20     char c;
21 };
22
23 int main()
24 {
25     struct_a sa;
26     sa.b = 2;
27     sa.a = 1;
28
29     printf("struct %d\n",sa.b);
30
31     Weekday wd;
32     wd = sun;
33
34     printf("enum %d\n", wd);
35
36     bigend be;
37     be.a = 97;
38
39     printf("union %c\n",be.c);
40     return 0;
41 }

三者用法相似,enum限定了取值范围,union更多作用应该是在以void*类型拷贝数据后,按内部类型做具体解析。

时间: 2024-10-06 06:22:37

struct,enum和uion的相关文章

Dictionary里使用struct,enum做key

首先看下Dictionary的源码 public void Add (TKey key, TValue value) { if (key == null) throw new ArgumentNullException ("key"); // get first item of linked list corresponding to given key int hashCode = hcp.GetHashCode (key) | HASH_FLAG; int index = (has

Lua 与C/C++ 交互系列:动态注册枚举enum到Lua Code中,在运行时在Lua Code中获取内省信息

在Lua 5.1 Reference Manual  对于Lua 值和类型的介绍.Lua是一个动态语言,在Lua中变量仅仅有值而没有类型.所以在Lua中的变量不需要声明.所以的值本身包含类型. 其实Lua 包含一种运行时类型识别,通过type()函数,可以在运行时获取值的类型. 信息来自: Lua 5.1 Reference Manual  Values and Types Lua is a dynamically typed language. This means that variable

第九章 C99可变长数组VLA详解

C90及C++的数组对象定义是静态联编的,在编译期就必须给定对象的完整信息.但在程序设计过程中,我们常常遇到需要根据上下文环境来定义数组的情况,在运行期才能确知数组的长度.对于这种情况,C90及C++没有什么很好的办法去解决(STL的方法除外),只能在堆中创建一个内存映像与需求数组一样的替代品,这种替代品不具有数组类型,这是一个遗憾.C99的可变长数组为这个问题提供了一个部分解决方案. 可变长数组(variable length array,简称VLA)中的可变长指的是编译期可变,数组定义时其长

广外第二周的实验报告来这里分享一下

虽然有很多还不知道怎么改,可能也有很多测试不到的地方,但是通过这个星期我好歹了解了好多东西啊 实验报告 通过本次学习,能了解到VC6.0.是用于将已生成的C++语言源程序代码转换为计算机能读懂的目标代码,计算机用的均是二进制代码.编辑完成后它首先生成扩展名为obj的文件(程序编译后的二进制文件),若想进行之后的链接.运行过程,必须不断修改源程序文件至完全正确. 在文件→新建→源代码这里可以新建源代码:新建→打开项目或文件中可以打开以前写过的源代码或者程序:运行→编译中即把所打源文件转换为二进制代

Objective-C的基础语法总结

1.NSLog(@“hello world!”);//打印语句的函数,需要打印的字符串放在@之后. NSLog(@“are %d and %d different?%@”,4,4,@”YES”); 2.方括号有两个作用: 1)访问数组元素 2)用于通知某个对象执行什么,在方括号内第一项是对象,其余部分是需要对象执行的操作.例如,[shape draw]的含义为通知shape执行draw方法. 3.方法调用:类名 方法名:参数 注意:如果方法使用参数,则需要冒号:否则不需要冒号. 4.类的编写:

2、C#面向对象:封装、继承、多态、String、集合、文件(上)

面向对象封装 一.面向对象概念 面向过程:面向的是完成一件事情的过程,强调的是完成这件事情的动作. 面向对象:找个对象帮你完成这件事情. 二.面向对象封装 把方法进行封装,隐藏实现细节,外部直接调用. 打包,便于管理,为了解决大型项目的维护与管理. 三.什么是类? 将相同的属性和相同方法的对象进行封装,抽象出 “类”,用来确定对象具有的属性和方法. 类.对象关系:人是类,张三是人类的对象. 类是抽象的,对象是具体的.对象可以叫做类的实例,类是不站内存的,对象才占内存. 字段是类的状态,方法是类执

iOS 强大的泛型,同样也可以对UIButton进行扩展

文章围绕这五点: 1. 泛型是什么 2. 为什么要用泛型 3. 泛型怎么用 4. 泛型进阶 5. 泛型的延伸使用 泛型(Generics)是什么? 引用Apple中Generics的描述: Generic code enables you to write flexible, reusable functions and types that can work with any type, subject to requirements that you define. You can writ

C#中DataTable转化为List&lt;T&gt;解析

在.net项目中使用到DataTable和List<T>集合的地方较多, 泛型的好处: 它为使用c#语言编写面向对象程序增加了极大的效力和灵活性.不会强行对值类型进行装箱和拆箱,或对引用类型进行.当涉及到两者之间的转换时,就显得有些较为繁琐.这个其中的问题主要在两者的存储方式,DataTable的存储方式采用一种二维表的方式进行数据的存储操作,DataTable表示内存中数据的一个表.在List集合中,List的本质就是一个数组,则采用一种线性结构对数据进行存储. 在转换过程中,主要的问题在于

最详细的 Swift 代码规范指南

1. 代码格式 1.1 使用四个空格进行缩进. 1.2 每行最多160个字符,这样可以避免一行过长. (Xcode->Preferences->Text Editing->Page guide at column: 设置成160即可) 1.3 确保每个文件结尾都有空白行. 1.4 确保每行都不以空白字符作为结尾 (Xcode->Preferences->Text Editing->Automatically trim trailing whitespace + Incl