1.typedef函数(别名)

Typedef是c语言最重要的关键字之一。

#include<stdio.h>typedef int integer;
int main(void)
{integer a;int b;a = 520;b = a;printf("%d\n", b);printf("%d\n", sizeof(a));printf("%d\n", sizeof(b));return 0;
}

相比于宏定义的直接替换,typedef是对类型的封装。

给结构体起别名

typedef struct Date
{int year;int month;int day;
} DATE,*PDATE;

2.共用体(union)

公用通道成员共用一个地址,给他们赋值之后,他们会互相覆盖,若打印出值,则只有最后一个成员的值是对的。

共用体所占内存大小也会对齐。

共用体的声明

#include <stdio.h>
#include <string.h>
union Test
{int i;float j;char k[20];
};
int main(void)
{union Test test;test.i = 1;test.j = 3.33;strcpy(test.k, "how are  you");printf("%p\n", &test.i);printf("%p\n", &test.j);printf("%p\n", &test.k);printf("%d\n", test.i);printf("%.2f\n", test.j);printf("%s\n", test.k);return 0;
}

共用体的初始化

union data a = { 520 };
union data b = a;
union data c = { .j = 'c' };

3.枚举类型

如果一个变量只有几种可能的值,那么就可以将其定义为枚举类型。

枚举类型的声明:

enum 枚举类型名称{枚举值名称,枚举值名称};

枚举变量的定义:

enum 枚举类型名称 枚举变量, 枚举变量;

枚举成员的值默认是和数组下标一样的,不过枚举成员的值可以从某个位置开始更新。

枚举类型的简单例子

#include<stdio.h>
int main(void)
{enum color{read=10,green,blue,yellow};enum color rgb;for (int i = 10; i <= yellow; i++){printf("%d\n", i);}return 0;
}

#include<stdio.h>
int main(void)
{enum color{red,green,blue=10,yellow};enum color rgb;printf("red=%d\n", red);printf("green=%d\n", green);printf("blue=%d\n", blue);printf("yellow=%d\n", yellow);return 0;
}

4.位域

位域就是将c语言的一个字节拆分开来使用。

在结构体定义的时候,在结构体成员后面使用冒号(:)和数字来表示该成员所占的位数。

不能对位域进行取值运算。

#include <stdio.h>
int main(void)
{struct Test{unsigned int a : 1;unsigned int b : 1;unsigned int c : 2;};struct Test test;test.a = 0;test.b = 1;test.c = 1;printf("%d\t%d\t%d", test.a, test.b, test.c);printf("sizeof test:%d", sizeof(test));return 0;
}

C语言学习日记(四)相关推荐

  1. c语言实训自我总结报告日记,C语言学习日记(1)-准备好工具

    小猫开始学习C语言啦,首先选个喜欢的工具吧.C语言开发工具真多啊,什么C-Free,Code Lite,Code::Blocks,DevC++,VisualStudio,CLion等,这些工具里面Vi ...

  2. 语言余一个负数_C语言学习日记(8)——整数溢出

    小时候喜欢玩电子计算器,觉得很神奇,想要算什么数,立刻就能算出来.当时看着计算器的液晶屏幕就想,如果算一个很大的数,超过了屏幕上面数字的位数,会怎么样呢?试了以后结果是INF,那就是无穷大了.虽然当时 ...

  3. const 指针_C语言学习日记(11)——const与指针

    对于一个普通指针typet *p.p有三个最基本的能力,第一就是可以通过p = &obj来指向一个type类型对象,并随意切换指向对象.第二就是通过value = *p来读取它指向的对象的值. ...

  4. c语言代码表白_C语言学习日记(9)——用C语言写一个爱心吧

    总羡慕别人的勇气,喜欢一个人就大胆表白.玫瑰和蜡烛围成的美丽的心形,就像此时主角的内心,浪漫而又炽热,不管成功与否,都一样美好. 爱的符号 而像小猫这种不善于表达的人,平时除了埋头看书,看上去好像没有 ...

  5. c语言程序设计周记,C语言学习日记

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 虽然只有两天 但是以后会继续的 希望不要删 C语言日记 2012-1-30 第一天学习C预言,通过网上推荐看谭浩强老师的<C语言程序设计>,和 ...

  6. C语言学习日记(2)——写个Hello,World测试一下

    感觉工具已经安装好了,但到底怎么样还要试过才知道.那就写一个经典的Hello,World程序测试一下吧! 首先打开vscode,新建一个文件,输入代码.代码字体颜色全都是白色的,看到状态栏右下角,原来 ...

  7. c程序语言设定定义域,4.22C语言学习日记:变量的定义域及编译预处理

    学习笔记: 变量的存储类型: 静态存储方式:在程序运行期间由系统分配固定存储空间:从程序开始执行到程序结束: 动态存储方式:根据需要进行动态的分配存储空间:从包含该变量定义的函数开始执行至函数执行结束 ...

  8. C语言学习日记(3)——printf函数

    写一个实用一点的程序,总免不了输入和输出,昨天小猫在测试工具是否安装好的时候写了一个简单的程序,也用到了输出.C语言中printf函数就是用于输出的.printf基本的用法就是: printf(&qu ...

  9. C语言学习笔记(四) 运算符优先级

    C语言中有很多运算符,除了四则运算,还有位运算.比较运算.逻辑运算.赋值运算等等,令人眼花缭乱的同时,优先级也让人头疼.通常建议在写代码的时候不用省略括号,但是并不是所有程序员都会按照这个规矩来,因此 ...

最新文章

  1. Spring Boot 中引入 MyBatisPlus 的常规流程
  2. C#微信公众平台开发—高级群发接口
  3. sp烘焙流程_3分钟带你快速入门substance painter 贴图制作
  4. 7-55 空心字母金字塔 (10 分)
  5. [jQuery] jQuery中如何将数组转化为json字符串,然后再转化回来?
  6. DHCP的安装到简单测试(tar方式)
  7. 我的世界java什么时候打折_十周年特别纪念!微软《我的世界》游戏全平台最高折扣50% - IT之家...
  8. java自行车起源_自行车的起源
  9. L1-001. Hello World-PAT团体程序设计天梯赛GPLT
  10. Shell 脚本实例
  11. 30分钟用flex测试FDS
  12. fine-tune 微调 Transfer learning 迁移学习 动手学深度学习v2
  13. Linux下使用和配置magick
  14. Colorbox 参数设置-中文版
  15. 逝随春花——OIer JCY 后续
  16. burp抓不到手机app请求包
  17. 【博客表情包】emoji和符号表情包
  18. 关了资源管理器电脑白屏解决办法
  19. 【CubeMX配置STM32驱动超声波模块(HC-SR04)】
  20. 鲁泰纺织:在行业整合中稳健前行

热门文章

  1. 【深度学习】数据读取与数据扩增方法
  2. 【C/C++】关于计算机内存地址的理解
  3. 《TCP IP协议 详解》思考总结 · 三
  4. mysql 100个标题_100个超强吸引人的标题
  5. 名字解析/DNS服务
  6. 当拓普遇上SAP,展翅翱翔的雄鹰飞向了更高的天空
  7. w7提示无法关闭计算机,番茄花园windows7关闭电脑关机时提示强制关闭程序怎么办...
  8. 每日一题【33】解析几何-椭圆的垂径定理与焦半径公式
  9. 日本杂货连锁店Loft首家海外直营店于上海开业
  10. 【思维导图怎么画】万彩脑图大师教程 | 添加备注