C Primer Plus 读书笔记之C基础回顾

目标代码文件、可执行文件和库

  C编程的基本策略是使用程序将源代码文件转换为可执行文件,此文件包含可以运行的机器语言代码。C分两步完成这一工作:编译和链接。编译器将源代码转换为中间代码,链接器将此中间代码与其他代码相结合来生成可执行文件。C使用被划分为两部分的这一方法使程序便于模块化。我们可以分别编译各个模块,然后使用链接器将编译过的模块结合起来。这样,如果需要改变一个模块,则不必重新编译所有其他模块。同时,链接器将自己的程序与预编译的库代码结合起来。

  中间文件的形式有多种选择。最一般的选这,同时也是大部分C程序员的选择,是将源代码转换为机器语言代码,将结果放置在一个目标代码文件(简称为目标文件)中。虽然目标文件包含机器语言代码,但该文件还不能运行。目标文件包含源代码的转换结果,但该转换结果并不是一个完整的程序。

  目标代码文件中的所缺少的第一个元素的一种叫做启动代码(start-up code)的东东,此代码相当于自己程序和操作系统之间的接口。

     目标代码中缺少的第二个元素是库函数的代码。几乎所有C程序都利用标准C库中包含的库函数。比如printf()函数,目标代码文件不包含这一函数的代码,它只包含声明使用printf()函数的指令。实际代码存储在库中。库文件中包含许多函数的目标代码。

  链接器的作用是将这3个元素(目标代码、系统的标准启动代码和库代码)结合在一起,并将它们存放在单个文件,即可执行文件中。对库代码来说,链接器只从库中提取我们编写代码中使用函数所需要的代码。

                 

  简而言之,目标文件和可执行文件都是由机器语言指令组成的。但目标文件只包含自己编写的代码转换成机器语言,而可执行文件还包含我们编写代码中使用的库例程以及启动代码的机器代码。

变量:

  int  num;//declaraion statement 声明语句

  这个特殊的例子声明两件事情。第一,在函数中有一个名为num的变量。第二,int说明num是一个整数,也就是说,这个数没有小数点或者小数部分。编译器使用这个信息为变量num在内存中分配一个合适的存储空间。句末的分号指明这一行是C语言的一个语句和指令。分号是语句的一部分,否则该语句被认为是不完整的;

  例子中的单词num是一个标识符(idfentifier),也就是你为一个变量、函数或者其他实体所选的名字。这样该声明把一个特殊的标识符和计算机内存中的一个特殊的位置联系起来,同时确定了该位置存储的信息类型(也即数据类型)。

  变量与常量的区别在于,变量的值可以在程序执行过程中变化与指定,而常量则不可以;

浮点数的在内存的中的存储:

  浮点数(floating-point)差不多可以和数学中的实数概念相对应。实数包含了整数之间的那些数。2.75、3.16E7、 7.00和2e-8都是浮点数。

  最重要的一点是浮点数与整数的存储方案不同。浮点数表示法将一个数分为小数部分和指数部分并分别存储。因此尽管7.00和整数7有相同的值,但它们的存储方式不同。与机器中的二进制存储方式相似,在十进制中的7.0可表示0.7E1;

  

declaration statement 声明语句
identifier 标识符
assignment statement 赋值语句
argument 参数
actual argument 实际参数
newline character 换行符
Escape Sequence转义字符
reserved identifier 保留标识符
format specifier 格式说明符

%0 %x
想要显示C语言前缀,可以使用说明符%#o、%#x、%#X分别生成0、0x、0X前缀;

%d 是一个占位符
%告诉程序把一个变量在这个位置输出,d告诉程序将输出一个十进制整形变量;
printf()中的f暗示着这是一种格式化(formating)的输出函数;
编译器的一个常见毛病是发现的错误位置比真正的错误要滞后一行,例如,编译器
要编译下一行时才发现上一行缺少一个分号。因此,如果编译器指出来某个具有分号
的行少了分号,那么请检查上一行;

字(word)是自然的存储单位,8位机,一个字8位,16位机,一个字16位,32位机,一个
字32位;
int类型存储在计算机的一个字中;

为什么说long和short类型“可能”占用比int类型更多或者更少的存储空间呢?因为C仅保证
short类型不会比int类型长,并且long类型不会比int类型短,这样做是为了适应不同的机器;
(涉及到不用厂商生产芯片不同)

 

时间: 2024-09-28 09:17:17

C Primer Plus 读书笔记之C基础回顾的相关文章

《JavaScript DOM 编程艺术》读书笔记之DOM基础_javascript技巧

DOM              DOM:文档对象模型: 节点        元素节点:DOM的原子是元素节点.<body>.<p>.<ul>之类的元素.元素可以包含其他的元素.没有被包含在其他元素里的唯一元素是<html>元素        文本节点:在XHTML文档里,文本节点总是被包含在元素节点的内部.        属性节点:属性节点用来对元素做出更具体的描述.例如,几乎每个元素都有一个title属性,而我们可以利用这个属性对包含在元素里的东西作出准

MYSQL必知必会读书笔记 第一章(基础)_Mysql

1.1 什么是数据库 数据库(database)是一个以某种有组织的方式存储的数据集合. 保存有组织的数据的容器(通常是一个文件或一组文件) 注意:人们通常使用数据库来代表他们使用的数据库软件.其实这是不正确的,确切的说,数据库软件应该成为DBMS(数据库管理系统).数据库是通过DBMS创建和操作的容器.数据库可以是保存在硬件设备上的文件,但也可以不是.在很大程度上说,数据库究竟是文件还是别的什么东西并不重要,因为你并不直接访问数据库:你使用的是DBMS,它替你访问数据库. 1.2 表 表(ta

《The C Programming Language》读书笔记总结 &amp;lt;一&amp;gt;.基础篇

写了这么多年的C代码,回过头来再看<The C Programming Language>这本书,作者Brian W. Kernighan和C语言之父Dennis M. Ritchie.感觉里面的知识和书的架构给人非常"合理"的感觉.怎么个合理法呢? 首先书中的代码,如else-if中使用binsearch函数介绍二分查找.atoi介绍字符串s转换为整数.计算器逆波兰表达式,都是实际中非常经典且常用的知识: 然后书中大部分的程序都是基于stdlib.h.string.h.c

091025 L DNA读书笔记

读书笔记和读后感 02 如何开始第一个工作     大企业,有很多好处.它与小企业的不同在于,小企业的竞争是对外的,而大企业的竞争则是来自于内部的.选择进入大企业的人,一定要有一个目标,多年后做到某个位置的目标.大企业适合喜欢跟同事竞争的人工作.     小企业,坏处是没有大企业的待遇好,不过可以学会更多的本领.     政府机关,如果选择到这里工作,那就是一个比较稳定的工作.在这里,如果比别人更勤奋的话,爬得也比别人快.     自由职业,如果选择这种方式工作,那么需要人有比较高的自我管控能力

第十四章 数组[《.net框架程序设计》读书笔记]

.net框架|笔记|程序|设计|数组 第十四章 数组. 内容摘要: 本章讨论了数组的方方面面,对于这种常用类型进行深入研究. 一. 数组简介 三种类型:一维数组.多维数组.交错数组(jagged aray) l 一维数组: Int32[] myIntegers; myIntegers = new Int32[100]; l 多维数组: Int32[,] myIntegers; myIntegers = new Int32[100,100]; l 交错数组:交错数组不受CLS支持 Point[][

《深度探索C++对象模型》读书笔记 最后一记

第6章主要讲述了执行期语意学,主要内容是关于数组的在构建和析构是如何进行的. 第7章主要讲述了有关Template的相关内容. 这两章内容散见于<Effective C++>.<More Effective C++>.<C++Primer><C++Templates中 文版>等书籍,如果感兴趣请阅读对应的书籍. 本读书笔记主要想谈一下对语意的理解. 本人认为C++程序设计可以简单分为三个层次:语法层.语言语意层(就像<深度探索C++对象模型>所讲

Qt 学习之路 2 --- 读书笔记

一.文章来由 来自豆子老师非常好的一本Qt教程,但是只有网络版,所以用这个做笔记了,不动笔墨不读书嘛~~ 二.读书笔记 1.Qt 学习之路 2(2):Qt 简介 1.1 关于 Qt 的一站式解决 Qt 是一个著名的 C++ 应用程序框架.但并不只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个"一站式"的解决方案:不再需要研究 STL,不再需要 C++ 的,不再需要到处去找解析 XML.连接数据库.访问网络的各种第三方库,因为

设计模式---读书笔记

一.文章来由 按照惯例,来一个来由,这是<设计模式-可复用面向对象软件的基础>的读书笔记,整理给自己看的,整理的内容也会不断更新.大神轻喷~~如果不喜欢请留言说明原因再踩哦,谢谢,我也可以知道原因,不断进步 二.读书笔记 1.P12 可复用的面向对象设计的原则: (1)针对接口编程,而不是针对实现编程.不将变量声明为某个特定的具体类的实例对象,而是让它遵从抽象类所定义的接口: (2)优先使用对象组合,而不是类继承.理想情况下,你不应为获得复用而去创建新的构件.你应该能够只使用对象组合技术,通过

《淘宝技术这十年》读书笔记 (三). 创造技术TFS和Tair

        前面两篇文章介绍了淘宝的发展历程和Java时代的变迁:             <淘宝技术这十年>读书笔记 (一).淘宝网技术简介及来源             <淘宝技术这十年>读书笔记 (二).Java时代的脱胎换骨和坚若磐石         马云说过"创新不是为了与对手竞争,而是跟明天竞争",所以这篇文章讲述淘宝的创新技术TFS和Tair及创新的产品.         该篇文章不仅仅对在读大学生非常有所帮助,因为你能从文章中看到很多你需要学