C和指针(学习笔记)_第2章 基本概念

1.环境

       在ANSI C的任何一种实现中,存在不同的环境。第一种是翻译环境__在这个环境里,源代码被转换为可执行的机器指令。第二种是执行环境__它用于实际执行代码。

     1)翻译:翻译阶段由几个步骤组成,组成一个程序的每个(有可能多个)源文件通过编译过程分别转换为目标代码。然后各个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。链接器同时也会引入标准C函数库中任何被执行该程序所用到的函数,而且它也可以搜索程序个人的程序库,将其中需要使用的函数也链接到程序中。编译过程本身也由几个阶段组成,首先是预处理器处理。然后源代码经过解析,判断它的语句的意思。

    2)执行:程序的执行过程也需要经历几个阶段。首先程序必须载入到内存中。在宿主环境(也就是具有操作系统的环境),这个任务由操作系统完成。那些不是存储在堆栈中的尚未初始化的变量将在这个时候得到初始值。在独立环境中,程序的载入必须手工安排,也可能是通过把可执行代码置入只读内存(ROM)来完成。然后程序的执行便开始,在宿主环境中,通常一个小型的启动程序与程序链接在一起。现在便开始执行程序代码,在绝大多数机器里,程序将使用一个运行时堆栈(stack),它用于存储函数的局部变量和返回地址,程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程中将一直保留它们的值。

2.词法规则

     一个ANSI C程序由声明和函数组成。函数定义了需要执行的工作,而声明则描述了函数和(或)函数将要操作的数据类型(有时是数据本身),注释可以散布于源文件的各个地方。

     1)字符:字符集,转义序列或字符转义。

     2)注释:/*开始,*/结束,//注释。

     3)自由形式的源代码:C是一种自由形式的语言。

     4)标识符:标识符就是变量、函数、类型等的名字。C语言关键字是被保留的,它们不能作为标识符使用。

     5)程序的形式:一个C程序可能保存于一个或多个源文件中。

3.程序风格

     1)空行用于分隔不同的逻辑代码段,它们是按照功能分段的。

     2)if和相关语句的括号是这些语句的一部分,而不是它们所测试的表达式的一部分。

     3)在绝大多数操作符的使用中,中间都隔以空格,这可以使表达式的可读性更佳。

     4)嵌套于其他语句的语句将缩进,以显示它们之间的层次。

     5)绝大部分注释都是成块出现的,这样它们从视觉上在代码中很突出。

     6)在函数的定义中,返回类型出现于独立的一行中,而函数的名字则在下一行的起始处。

4.总结

     一个C程序的源代码保存在一个或多个源文件中,但一个函数只能完整地出现在同一个源文件中。把相关的函数放在同一个文件内是一种好策略。每个源文件都分别编译,产生对应的目标文件。然后目标文件被链接在一起,形成可执行程序。编译和最终运行程序的机器有可能相同,也可能不同。

     程序必须载入到内存中才能执行。在宿主式环境中,这个任务由操作系统完成。在自由式环境中,程序常常永久存储于ROM中。经过初始化的静态变量在执行之前能获得它们的值。你的程序执行起点是main函数。绝大多数环境使用堆栈来存储局部变量和其他数据。C编译器所使用的字符集必须包括某些特点的字符,如果你使用的字符集缺少某些字符,可以使用三个字母词来代替,转义序列是某些无法打印的字符得以表达,例如在程序中包含某些空白字符。

5.警告的总结

     1)字符串常量中的字符被错误地解释为三字母词;

     2)编写得糟糕的注释可能会意外地中止语句;

     3)注释的不适当结束;

6.编程提示的总结

     良好的程序风格和文档将使程序更容易阅读和维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值