栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言学习笔记(浙大翁恺版)第十一周 结构(3)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言学习笔记(浙大翁恺版)第十一周 结构(3)

目录

11.3.1 类型定义

自定义数据类型(typedef)

 举几个例子:

11.3.2 联合

存储

常见的使用场景(得到整数内部的每个字节程序)


11.3.1 类型定义

 每次定义都要写struct。累不?烦不?好消息好消息,现在起,用自定义数据类型,立马解君愁!

自定义数据类型(typedef)
  • C语言提供了一个叫做typedef的功能来声明一个已有的数据类型的新名字
  • typedef int Length;
    
    这样就使得Length成为了int类型的别名,
    此时Length可以代替int出现在变量定义和参数声明的地方,如
    
    Length a=10;
    Length number[10];

声明新的类型的名字,作为某种类型的别名,大大改进了可读性 

typedef 原来的类型名 新类型名

如果原类型名很长,只需要看最后的单词来判断

原来:
struct Adate{
    int month;
    int day;
    int year;
};
新:
typedef struct Adate{
    int month;
    int day;
    int year;
} Date;//这个Date就是新名字

Date d1={9,1,2015};
等价于
struct Adate d1={9,1,2015};

 举几个例子:
typedef *char[10] Strings;
//Strings是10个字符串的数组类型

typedef struct node{
    int data
    struct node *next;
}aNode;
//aNode是新名字

typedef struct node aNode;
//aNode是struct node的新名字

11.3.2 联合

联合是和结构特别像的一个东西

union AnElt{
    int i;
    char c;
}elt1,elt2;

elt1.i = 4;
elt2.c = 'a';
elt2.i = 0xDEADBEEF;
//先写入char类型为a,之后用0x...覆盖掉了

但不同的是,内部的成员看似有两个,实际上你只能选一个,int or char

  • 存储
    • 所有的成员共享一个空间
    • 同一时间只有一个成员是有效的
    • union的大小是它最大的成员(如int和char,大小为(sizeof)int) 

  • 初始化时,对第一个成员做初始化

常见的使用场景(得到整数内部的每个字节程序)
#include
typedef union{
    int i;//如果改为float、double等,全部替换就可以了
    char ch[sizeif(int)];
} CHI;
//起个别名为CHI

int main()
{
    CHI chi;
    int i;
    chi.i = 1234;
//初始化为1234,对应的十六进制为0x04D2
    for(i=0; i 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034134.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号