《C与指针》第二章 基本概念

我非常喜欢这章开头的一句话,坚持写笔记的动力也受到这段话的影响:

毫无疑问,学习一门编程语言的基础知识不如编写程序有趣。但是,不知道语言的基础会使你在编写程序的时候缺少乐趣。

2.1 环境

翻译环境(translation environment):应该写完代码时的编译环境,编译成可执行的机器指令。

执行环境(execution environment):就是编译完的程序运行的环境。

独立环境(freestanding environment):嵌入式系统,没有操作系统的环境。

2.2.1 翻译

翻译阶段分成几个步骤:一个或多个源文件编译成目标代码(object code)。然后目标文件由链接器(linker)捆绑在一起,形成一个单一而完成的可执行程序。如果源码中我们用到了一些别的函数,那么在链接的过程中,链接器也会引入标准C函数库或者我们自己写的库文件中的程序。

在编译的时候也有几个过程:

预处理器(preprocessor)处理一下源文件,把需要替换的内容替换下(#define),把需要引入的内容引入下(#include)。

解析(parse)判断下语句的意思,期间会产生大多数错误和警告。

如果没什么问题就会产生目标代码。目标代码时机器指令的初步形式,用于实现程序的的语句。

如果编译的时候加入优化指令,优化器(optimizer)会对目标代码进一步处理优化,这需要时间所以,程序在生成正式产品之前不进行这个过程(release和debug版本之前的区别)。

2.1.2 执行

程序的执行过程也分为几步:

  1. 将程序载入到内存
  2. 操作系统接管该程序
  3. 调用main入口
  4. 终止(包括正常返回和异常中断)

运行的程序肯能会使用两种存储空间:

  1. 运行时堆栈(stack): 用于存储函数的局部变量和返回地址。
  2. 静态(static)内存:存储于静态内存中的变量在程序的整个执行过程中一直保留。

2.2 词法规则

2.2.1 字符

介绍了以前因为字符集条件不满足的时候而使用的三字母词(trigrph),就是几个字符的序列,合起来表示另一个字符。具体使用的时候再说吧,有个印象即可。

转义字符就是反斜杠\加字符的组合(\n 换行 \r 回车 \t TAB \v 垂直制表符...... ),来表示一些特殊的意思。

2.2.2 注释

写好注释!

2.2.3 自由形式的源代码(代码风格)

能够写超级难懂的源码!

2.2.3 标识符

由大小写字母、数字和下划线组成,长度没限制,但一般小于31。关键字不能当作标识符哦~

2.3 总结

强调下注释和代码风格,这些很重要。变量名和函数名的这些设计也是积累的过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值