C语言学习日记(四)
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语言学习日记(四)相关推荐
- c语言实训自我总结报告日记,C语言学习日记(1)-准备好工具
小猫开始学习C语言啦,首先选个喜欢的工具吧.C语言开发工具真多啊,什么C-Free,Code Lite,Code::Blocks,DevC++,VisualStudio,CLion等,这些工具里面Vi ...
- 语言余一个负数_C语言学习日记(8)——整数溢出
小时候喜欢玩电子计算器,觉得很神奇,想要算什么数,立刻就能算出来.当时看着计算器的液晶屏幕就想,如果算一个很大的数,超过了屏幕上面数字的位数,会怎么样呢?试了以后结果是INF,那就是无穷大了.虽然当时 ...
- const 指针_C语言学习日记(11)——const与指针
对于一个普通指针typet *p.p有三个最基本的能力,第一就是可以通过p = &obj来指向一个type类型对象,并随意切换指向对象.第二就是通过value = *p来读取它指向的对象的值. ...
- c语言代码表白_C语言学习日记(9)——用C语言写一个爱心吧
总羡慕别人的勇气,喜欢一个人就大胆表白.玫瑰和蜡烛围成的美丽的心形,就像此时主角的内心,浪漫而又炽热,不管成功与否,都一样美好. 爱的符号 而像小猫这种不善于表达的人,平时除了埋头看书,看上去好像没有 ...
- c语言程序设计周记,C语言学习日记
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 虽然只有两天 但是以后会继续的 希望不要删 C语言日记 2012-1-30 第一天学习C预言,通过网上推荐看谭浩强老师的<C语言程序设计>,和 ...
- C语言学习日记(2)——写个Hello,World测试一下
感觉工具已经安装好了,但到底怎么样还要试过才知道.那就写一个经典的Hello,World程序测试一下吧! 首先打开vscode,新建一个文件,输入代码.代码字体颜色全都是白色的,看到状态栏右下角,原来 ...
- c程序语言设定定义域,4.22C语言学习日记:变量的定义域及编译预处理
学习笔记: 变量的存储类型: 静态存储方式:在程序运行期间由系统分配固定存储空间:从程序开始执行到程序结束: 动态存储方式:根据需要进行动态的分配存储空间:从包含该变量定义的函数开始执行至函数执行结束 ...
- C语言学习日记(3)——printf函数
写一个实用一点的程序,总免不了输入和输出,昨天小猫在测试工具是否安装好的时候写了一个简单的程序,也用到了输出.C语言中printf函数就是用于输出的.printf基本的用法就是: printf(&qu ...
- C语言学习笔记(四) 运算符优先级
C语言中有很多运算符,除了四则运算,还有位运算.比较运算.逻辑运算.赋值运算等等,令人眼花缭乱的同时,优先级也让人头疼.通常建议在写代码的时候不用省略括号,但是并不是所有程序员都会按照这个规矩来,因此 ...
最新文章
- Spring Boot 中引入 MyBatisPlus 的常规流程
- C#微信公众平台开发—高级群发接口
- sp烘焙流程_3分钟带你快速入门substance painter 贴图制作
- 7-55 空心字母金字塔 (10 分)
- [jQuery] jQuery中如何将数组转化为json字符串,然后再转化回来?
- DHCP的安装到简单测试(tar方式)
- 我的世界java什么时候打折_十周年特别纪念!微软《我的世界》游戏全平台最高折扣50% - IT之家...
- java自行车起源_自行车的起源
- L1-001. Hello World-PAT团体程序设计天梯赛GPLT
- Shell 脚本实例
- 30分钟用flex测试FDS
- fine-tune 微调 Transfer learning 迁移学习 动手学深度学习v2
- Linux下使用和配置magick
- Colorbox 参数设置-中文版
- 逝随春花——OIer JCY 后续
- burp抓不到手机app请求包
- 【博客表情包】emoji和符号表情包
- 关了资源管理器电脑白屏解决办法
- 【CubeMX配置STM32驱动超声波模块(HC-SR04)】
- 鲁泰纺织:在行业整合中稳健前行
热门文章
- 【深度学习】数据读取与数据扩增方法
- 【C/C++】关于计算机内存地址的理解
- 《TCP IP协议 详解》思考总结 · 三
- mysql 100个标题_100个超强吸引人的标题
- 名字解析/DNS服务
- 当拓普遇上SAP,展翅翱翔的雄鹰飞向了更高的天空
- w7提示无法关闭计算机,番茄花园windows7关闭电脑关机时提示强制关闭程序怎么办...
- 每日一题【33】解析几何-椭圆的垂径定理与焦半径公式
- 日本杂货连锁店Loft首家海外直营店于上海开业
- 【思维导图怎么画】万彩脑图大师教程 | 添加备注