《C语言深度解培》读书笔记之一
不同类型数据之间的运算要注意精度扩展问题,一般低精度的数据向高精度的数据扩展。
sizeof
sizeof在计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。一般情况下都加上括号。
sizeof的用途必须得掌握。程序员笔试题目中也会经常考察其有关的用法。
#与存储分配和I/O系统的例程进行通信。
#查看某个类型对象在内存中所占的单元字节。
#便于一些类型的扩充,在windows中,很多结构类型有一个专用的字段是用来存放该类型字节的大小。
#在涉及琶操作数字节大小时,用sizeof来代替常量计算。
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main(void)
{char a[1000];int i;for (i=0;i<1000;i++){a[i]=-1-i;}printf("%d\n",strlen(a));getch();return 0;
}
答案是255
定义的时候就把它的内存空间给限制死了,要是不初始化,那块区域永远就是那个样子了。
编译器通常不为普通const只读变量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的值,没有了存储与读内存的操作,使得它的效率也很高。
const定义的只读变量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define给了了立即数,所以,const定义的只读变量在程序运行过程中只有一份拷贝,(因为它是全局的只读变量,存放在静态区),而#define定义在宏常量 在内存中有若干个拷贝。
volatile
volatile可以保证对特殊地址的稳定访问。
volatile是与编译器优化相关的关键字。
struct(结构体)
struct它将一些相关联的数据打包成一个整体,方便使用。
一个空的结构体所占的空间是多大呢?
柔性数组
struct与class的区别
struct:数据成员默认为public属性,只含数据,不含操作。
class:数据成员默认为private属性。可以包含操作,class还可以表模板类型而struct则不能。
struct与union的区别
(a)struct变量所占内存长度是名成员所占内存长度之和,另需考虑内存对齐,每个成员都有自己的内存单元。
union变量所占内存长度等于最长的数据成员长度。
(b)对于struct的不同成员赋值是互不影响的,
而对于union的不同成员赋值,将会对其他成员重写,原来的值就不存在了。
union(共用体)
union主要用来压缩空间。如果一些数据不可能在同一时间被用到,则可以使用union.
一个union只配置一个足够大的空间以来容纳最大长度的数据成员。
大小端模式对union类型数据的影响
大端模式(Big_endian):字数据的高字节存储在低地址上,而字数据的低字节则存放在高地址中。
小端模式(Little_endian):字数据的高字节存储在高地址上,而字数据的低字节则存放在低地址中。
union型数据所占的空间等于其最大数据成员的占的空间。
对union型的成员的存取都是相对于该联合体基地址偏移量为0处开始,也就是联合体访问不论对哪个变量的存取都是从union的首地址位置开始的。
编写一个函数,如果处理器是big_endian的,则返回0,若是littel_endian的,则返回1.
#include <stdio.h>
#include <conio.h>
int checksystem(void);
int main(void)
{int n;n=checksystem();if (n==1){printf("BIG\n");}else{printf("LITTEL\n");}getch();return 0;
}
int checksystem(void)
{union check{int i;char ch;}c;c.i=1;return (c.ch == 1);
}
有的系统同时支持两种存储模式,你可以用硬件跳线或在编译器的选项中设置存储模式。
enum(枚举)
所谓enum就是将变量的值一一列举出来,变量的值仅限于在列举出来的值的范围内。
可以把一个枚举变量的值直接赋值一个整型变量。
枚举类型会转换为相应的类型,但数据类型不能自动转换为枚举类型。
enum与#define的区别
#define是在预编译阶段进行简单的文本替换,而enum是在编译的时候确定其值。
一般在编译器里,可以调试枚举变量,但是不通调试宏常量。
枚举可以一次定义大量相关的常量,而#define宏一次只能定义一个。
typedef
博大精深
typedef是为已有的类型建立一个或多个别名,而不是新建一个类型,不要被字面意思误导。
使用typedef可以增加程序的可移植性。
用typedef定义的数据类型变量不能用signed,unsigned,short,long等关键字来修饰,typedef没有宏的自扩展性。
<事后专门补习typedef的用法>
第一章中主要介绍了C中32个关键字的一些特性及用法,对于这些最基本的东西,在概念上一定要彻底弄清楚是怎么回事,多问几个为什么,多思考一下不同之处。
《C语言深度解培》读书笔记之一相关推荐
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3
技术非常多,样例非常多.仅仅好慢慢学,慢慢实践!!如今学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQ ...
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记2
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...
- 简单使用Git和Github来管理自己的代码和读书笔记
简单使用Git和Github来管理自己的代码和读书笔记 以前不知道使用代码管理工具,最后写的一些东西都没有了,由于硬盘坏了或者不小心格式化了之类的,后来使用了Git 和Github来托管自己的代码和读 ...
- 第一行代码 Android读书笔记(二)
第一行代码 Android读书笔记 第三章 软件也要拼脸蛋-UI开发的点点滴滴 常用控件的使用方法 详解4种基本布局 自定义控件 最常用和最难用的控件-ListView 更加强大的滚动控件-Recyc ...
- 《第一行代码》读书笔记(七):album爬坑
<第一行代码>读书笔记(七):album爬坑 权限问题 尽管书中提到4.4系统之前需要声明访问SD卡权限,不过很遗憾,4.4系统之后仍然需要 照片不显示问题 Android10对文件访问权 ...
- 《梦断代码》读书笔记——第3、4、5章
只觉得这段时间事儿太多了,本应该周五就应该写的读书笔记一直拖到今天. 读完这几章,我主要收获了以下几点:计算机编程语言的发展由低级语言到高级语言,高级语言是在低级语言的基础上发展起来的,低级语言不应该 ...
- 代码大全阅读笔记02
第二部分:创建高质量的代码 第一部分主要介绍了开发过程和需求分析,强调了构建的重要性,可以说十介绍了技术层面的一些东西.第二部分把目光放到了更加细节的地方,也开始看到了一些代码.内容十分全面,也写了很 ...
- 《梦断代码》读书笔记
梦断代码,英文名是DREAM IN DODE.梦断代码,原作是美国的Scott Rosenberg,经韩磊翻译而来. 为什么选择读这本书?在图书馆软件工程处翻阅时,被这本书的名字吸引住了,同时之前也听 ...
- Linux命令行与Shell脚本编程大全读书笔记
Linux内核4大主要功能: 内存管理 进程管理 设备管理 文件系统管理 Linux系统启动的进程和脚本管理 1./etc/inittab 管理系统开机时会自动启动的进程 2./etc/init. ...
- 《梦断代码》读书笔记1
刚开始看到书名时,我感觉这个名字非常好,梦断代码,代码是我们每个学习计算机同学的噩梦,有多少人是讨厌当码农的.怀着好奇的心情,开启了我这本书的阅读旅程. 首先看到的是CSDN的总裁和Discuz创始人 ...
最新文章
- 赠票 | 互联网大厂的数据治理与资产管理实战 | DAMS 2020
- Spring为什么建议使用构造器来注入?
- XtraReport交叉表自适应行高及最佳列宽(转)
- 数据分析之道:抽丝剥茧,存乎一心(中)
- 带你了解极具弹性的Spark架构的原理
- 研发管理---(1)持续交付
- B站升级HDR10真彩画质,开启4K+120帧+HDR创作新时代
- 2012年总结2013展望 向岁月致敬 对未来憧憬
- 中国物流领域首次!菜鸟路径规划算法入围全球最高工业奖项
- React Router的Route的使用
- 把.Net开发环境迁移到Linux上去
- 中国传统四大菜系之:鲁菜
- Java为Excel导出增加批注(POI)
- C语言数据结构:链表-顺序表:初始化及操作
- 2021年北京市级企业技术中心申报时间及流程是什么,补贴300万
- 反射修饰符 Modifier
- 简单总结里的结构化,成长型思维
- 〖Python自动化办公篇⑫〗- Excel 文件自动化 - 读取 excel 数据
- android 手机强制关机代码,安卓手机如何强制关机?安卓手机强制关机方法[多图]...
- 淘宝订单、API获取订单