共用体+结构体(2)

#include <stdio.h>

typedef union
{
    unsigned long dwVal;

    struct
    {
        unsigned short int  LSB;    /* LSB word code */
        unsigned short int  MSB;    /* MSB word code */
    }Word;

    struct
    {
        unsigned char   byte0;        /* bit 7  ~  0 */
        unsigned char   byte1;        /* bit 15 ~  8 */
        unsigned char   byte2;        /* bit 23 ~ 16 */
        unsigned char   byte3;        /* bit 31 ~ 24 */
    }Byte;

}ULONG;

void main()
{
    ULONG Data;

    Data.dwVal = 12345678;
    printf("Data.dwVal = %ld \n", Data.dwVal);
    printf("Data.Byte = %ld \n", Data.Byte);
    printf("Data.Word = %ld \n", Data.Word);

    printf("Data.Byte.byte3 = %d \n", Data.Byte.byte3);
    printf("Data.Byte.byte2 = %d \n", Data.Byte.byte2);
    printf("Data.Byte.byte1 = %d \n", Data.Byte.byte1);
    printf("Data.Byte.byte0 = %d \n", Data.Byte.byte0);

    printf("Data.Word.MSB = %d \n", Data.Word.MSB);
    printf("Data.Word.LSB = %d \n", Data.Word.LSB);

    printf("Sizeof____Data.dwVal = %d \n", sizeof(Data.dwVal));
    printf("Sizeof____Data.Byte = %d \n", sizeof(Data.Byte));
    printf("Sizeof____Data.Word = %d \n", sizeof(Data.Word));

    printf("Sizeof____Data.Byte.byte3 = %d \n", sizeof(Data.Byte.byte3));
    printf("Sizeof____Data.Byte.byte2 = %d \n", sizeof(Data.Byte.byte2));
    printf("Sizeof____Data.Byte.byte1 = %d \n", sizeof(Data.Byte.byte1));
    printf("Sizeof____Data.Byte.byte0 = %d \n", sizeof(Data.Byte.byte0));

    printf("Sizeof____Data.Word.MSB = %d \n", sizeof(Data.Word.MSB));
    printf("Sizeof____Data.Word.LSB = %d \n", sizeof(Data.Word.LSB));
}
时间: 2024-10-14 09:48:48

共用体+结构体(2)的相关文章

C#调用C/C++动态库 封送结构体,结构体数组

因为公司一直都是做C++开发的,因客户需要要提供C#版本接口,研究了一下C#,发现其强大简洁, 在跨语言调用方面封装的很彻底,提供了强大的API与之交互.这点比JNA方便多了. Java与C#都只能调用C格式导出动态库,因为C数据类型比较单一,容易映射. 两者都是在本地端提供一套与之映射的C#/java描述接口,通过底层处理这种映射关系达到调用的目的. 一. 结构体的传递 Cpp代码   #define JNAAPI extern "C" __declspec(dllexport) /

C语言----结构体---结构体与函数

结构作为参数的函数 整个结构可以作为参数传入函数 这时是在函数中新建了一个结构变量,并复制调用这个结构的值(重点,只是把值传入函数,而函数外面真正的变量并没有改变,与数组不同) 函数也可以返回一个结构 直接来个简单的例子吧: 问题:用户输入今天的日期,输出明天的日期. 提示:闰年,每个月最后一天, 代码: #include <stdio.h>#include <stdbool.h>/* 根据今天的日期算出明天的日期.*/ //结构体放在函数外侧,相当于一个全局变量,所有的函数都能使

C语言 结构体(嵌套结构体--结构体数组)

//结构体--嵌套结构体和结构体数组 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct _parent{ int num; char name[30]; //结构体内部定义结构体,如果不定义嵌套结构体变量,那么该嵌套结构体的属性则会被当作父结构体的属性 struct son{ int age; char sna

C#调用C++ 平台调用P/Invoke 结构体--结构体嵌套【八】

普通的结构体嵌套很简单,C#中直接定义成对应的结构体即可,这里介绍的是嵌套的结构体以指针的方式表达 [1]嵌套结构体指针 C++代码: typedef struct _testStru10Pre { int iVal; }testStru10Pre; typedef struct _testStru10 { testStru10Pre *pPre; long lVal; _testStru10() { pPre = NULL; } }testStru10; EXPORTDLL_API void

C语言结构体和共用体_07

概述 定义结构体类型变量的方法 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表 共用体 枚举类型 用 typedef定义类型  概述 定义一个结构体的一般形式: struct 结构名 { 成员列表 }; 一个结构体有一个结构名,但不是必须的.成员列表有若干个成员组成,每个成员都是该结构的一个组成部分.对每个成员也必须作类型说明,其形式为: 类型说明符 成员名; 例如: // 学号.姓名.性别.年龄.地址等属性 struct Student { int

《天天酷跑》游戏后台结构体标准化探 转

http://www.yxrb.net/thread-11839-1-1.html 在程序设计领域,程序就是数据结构加算法的理论早已深入人心.在手机游戏的后台系统中,数据结构就是各式各样的struct或class,遍布于数据存储(DB).内存(业务逻辑).网络(C/S交互协议),算法就是各种基于数据的业务处理逻辑了. 手机游戏后台数据结构有一些特点: 以整形数据为主,字符串类型比例很少,绝大部分数据可以用整形(直接或间接)表示. 相对大型端游,数据结构相对简单,绝大多数可以通过2-3层结构来抽象

C/C++心得-结构体

先说句题外话,个人认为,基本上所有的高级语言被设计出来的最终目的是降低软件开发难度,提升软件开发人员素质和团队协作能力,降低软件维护的难度.在学习语言的时候,可以从这么方面来推测各种语言语法设计的原因,从来更好的掌握各种编程语言. 总结一下C语言中的数据类型结构: 1.常用基本数据类型(int, char, float, double, short, long等等) 2.数组 3.指针 4.枚举 5.结构体 6.公用体 ... 这其中除了共用体不常用外,其他都是实际开发中经常用到的数据结构.其他

9、C语言——结构体

结构体 构造-定义-使用 构造类型--结构体类型 类型是用来定义变量的 结构体类型 使用结构体变量.结构体数组.结构体指针变量 一.结构体类型 1.构造结构体类型 struct 结构体类型名--遵循用户的标识符 { 成员1的定义 成员2的定义 ...... 成员n的定义 }; eg: struct student { int sn; int age; char sex; int s[3]; }:此处的分号不能省略· struct 是构造结构体类型的标志 其中的student不是变量名,是构造的体

Swift基础(类,结构体,函数)

import Foundation // 创建一个类 class Student { // 属性(类的属性必须赋初值,如果不赋值,需要写自定义方法) var studentName: String var studentAge: Int // 方法 func fallInLove(girlName:String) { print("\(self.studentName)看上隔壁的\(girlName)") } // 构造方法(自定义init方法) init (studentName1: