第1章 C语言概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译过程又可以分成两个阶段:编译和汇编。
编译是读取源程序(字符流),对之进行词法和语法的分析,将高级语言指 令转换为功能等效的汇编代码,源文件的编译过程包含两个主要阶段:
第一个阶段是预处理阶段,在正式的编译阶段之前进行。预处理阶段将根据 已放置在文件中的预处理指令来修改源文件的内容。如#include 指令就是一个 预处理指令,它把头文件的内容添加到.c 文件中。这个在编译之前修改源文件 的方式提供了很大的灵活性,以适应不同的计算机和操作系统环境的限制。一个 环境需要的代码跟另一个环境所需的代码可能有所不同,因为可用的硬件或操作 系统是不同的。在许多情况下,可以把用于不同环境的代码放在同一个文件中, 再在预处理阶段修改代码,使之适应当前的环境。
重点:标准库函数由 ANSI 规范。
printf( )函数中“”之间的格式控制的内容将会标准输出。标准输出是由屏 幕输出,标准输入是由键盘输入。标准输入或者输出的程序也将被视为文件。
包含文件
main 函数的函数声明和上面函数声明相同(void main(void );),但是 printf 函数的函数声明与 main 函数声明不同,其声明如下:
第二个阶段编译、优化阶段,经过预编译得到的输出文件中,只有常量;如 数字、字符串、变量的定义,以及 C 语言的关键字。
必要的软件及 c 语言编译器
如果计算机使用的是 windows 系统的话,可以使用自带的记事本软件编写程 序。以文本文件的形式保存 C 语言源文件,其文件扩展名为.C 。编译时使用一个
4.中级语言
C 语言把高级语言的基本结构与低级语言的实用性结合起来。它可以像汇编 语言一样对位、字节和地址进行操作,这三者是计算机最基本的工作单元,C 语 言可实现汇编语言的绝大部分功能。
5.移植性好
用 C 语言编写的程序移植性好,生成的目标代码质量高,程序执行速度快。
6.功能强大
C 语言有丰富的库函数、强大的图形功能,有预处理能力,和其他语言如汇 编语言、Pascal 语言、数据库语言等的接口容易实现,C 程序中还可以直接调用 DOS 命令。因此,C 语言适合于编写各种系统软件、工具软件等大型软件。目前, 在工业计算机控制系统开发中,越来越多的人都使用 C 语言来编写控制软件。
其他形式的注释
C++中可以用//注释。现在 C 语言中也可以采用这种注释方式。如果有//则 表明本行结束是注释,这种注释可以单独占一行,也可以出现在一行中其他内容 的右侧。此种注释以//开始以换行符结束。也就是说这种注释不能跨行。如果一 行内容写不下,可以用多个单行注释。
重点:编译器不同允许的注释方式也不同。 /* * 可以这写注释。 * */
C 语言的特点
1.结构化语言
结构化语言的一个显著特点是代码和数据的分隔化,即程序的各部分除了必 要的信息交流外彼此互不影响,相互隔离。C 语言的主要结构成分是函数,函数 是 C 语言的基本结构模块,所有的程序活动内容都包含在其中,函数在程序中被 定义完成独立的任务,独立地编译成目标代码,这样可以实现程序的模块化。C 语言中,另一个实现程序结构化和分离化的方法是使用符合语句,复合语句是作 为一个语句对待的,且具有逻辑联系的程序语句的组合,它是一个逻辑单元。
C 语言的产生与发展
C 语言是 1972 年由美国的 Dennis Ritchie 设计发明的, 并首次在 UNIX 操 作 系 统 的 DEC PDP-11 计 算 机 上 使 用 。 它 由 早 期 的 编 程 语 言 BCPL( Basic Combind Programming Language) 发展演变而来。在 1970 年, AT&T 贝尔实验室的 Ken Thompson 根据 BCPL 语言设计出较先进的并取 名为 B 的语言, 最后导了 C 语言的问世。 随着微型计算机的日益普及, 出现了 许多 C 语言版本。由于没有统一的标准, 使得这些 C 语言之间出现了一些不一 致的地方。为了改变这种情况, 美国国家标准 研究所(ANSI)为 C 语言制定了一 套 ANSI 标准, 成为现行的 C 语言标准。
第 1 章 C 语言概述
本章知识要点:
绪论
什么是 C 语言,简单介绍能够执行的软件。
最短的 C 语言源代码
如何写注释、函数声明、main 函数、函数与堆栈、编码风格等问题的学习。
字符输出
包含文件、标准库函数、学习头文件是什么。
整数输入输出
变量类型、范围、标准库函数 scanf()的简单介绍
字符输入输出
void main(void)
Fra Baidu bibliotek
{
int n;
/*声明一个整型变量 */
printf("请输入一个整数");
scanf("%d", \n);
/**********************************
*
这样的写法*
*
尝试
*
***********************************/
1.2.2 C 语 言源程序
/* 程序例 1.1 是最简单的 C 语言程序,在 C 语言编译器内即可编译执行。 */
例 1.1 /* 源程序开始 */
函数的定义是为了调用此函数。在调用有参函数是,主调函数与被调函数之 间有数据传递关系。在定义函数时函数名括号中的变量名称为“形式参数”(简 称形参),在主调函数中函数调用一个函数时,函数名后面括号中的参数称为“实 际参数”(简称实参)。在调用函数过程中,系统会把实参的值传递给被调用函 数的形参。
main 函数
C 语言编译系统(如 TurboC 2.0 ,VC++6.0 等)对 C 语言源程序进行语法检查 和翻译,生成同名的“.OBJ”目标文件。链接时将目标文件和系统提供的标准库 函数等连接在一起,生成 一个同名的“.EXE”可执行文件。执行时若脱离 C 语言编译系统,可在操作系统下键入文件名直接运行。本书是以 TurboC 2.0 为基 础来介绍的。
计算机有栈(stack)的一种特殊的内存位置。其中存储的数据,取出的时 候会先取出后放进的数据,也就是 LIFO(后进先出)的存储方式。
函数的参数是用来指定参数的名字和类型,以便在调用函数时向它们传递数 据,参数之间用;隔开。对无参数函数不需要这项。
函数名后面的括号中为 void 或者为空的,则表示函数没有参数。上面程序 中 main 函数中的 void 表示没有参数。
1.2 简单的 C 语言源程序
前面说过 C 语言是一种程序语言,程序中包含函数和注释,下面来对 C 语 言中的注释以及相关函数进行详细说明。
1.2.1 注释
/* 注释 */ 上面一行表示注释。注释以'/* '开始、以' */'结束。 编译程序忽略注释开始符到注释结束符间的任何文本,注释可出现在程序的 任何位置,但它不能出现在关键字或标识符中间。这种注释可以包含多行内容。 编译系统发现一个/*后,就开始找注释结束符*/,把两者之间的内容作为注释。 重点:注释以'/* '开始以' */'结束。 注释不能嵌套使用,即一个注释内不能含有另一个注释。
7.编译语言
C 语言是编译语言,用 C 语言写的源程序必须经过编译后才能运行。
编译步骤
C 语言的编译链接过程要把我们编写的一个 c 程序(源代码)转换成可以在 硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式 源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的 启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。整个代码的 编译过程分为编译和链接两个过程。
了解 char 型和数组、键盘输入字符、屏幕显示输入的字符。
浮点数输入输出
了解 double 型变量、输入 2 个浮点数、屏幕输出其平均值。
printf( )和 scanf( )函数的返回值 了解符号常量函数返回值标准库函数 printf( )和 scanf( )的函数返回值。
定义函数
定义函数的方法。输入一个整数,将其值的一半作为返回值。
标准库函数
main 函数本体里面有这样一行函数:
printf("Hallow World!\n"); // 标准输出函数
主函数调用了一个 printf 函数,函数参数是 Hallow World!\n。其中\n 表示换 行,是换行符。
printf 函数是屏幕输出函数,这个功能是是由 ANSI(美国国家标准协会)规 范的函数。此函数包含在标准库函数中。
语句,使用的是“<>”。也可以用“' ”'自己编写头文件。例如,你会是这样的#include“my.h”。
重点:头文件是’.h’扩展。
在编辑器里可以看到 stdio.h 的内容,在以后的学习中将会遇到各种各样的 头文件,但是头文件里的内容不能改写。
重点:绝对不能改写头文件里的内容。 */
1.4 整数的输入输出
#include <stdio.h> // 引用文件
这是编译预处理命令。编译预处理以#开始。
重点:编译预处理以#开始,行末不加;
include 命令是说明<>中包含的文件。
“stdio.h 中'是标准库函数的头文件。如 printf()的函数声明写在“stdio.h”中。所 谓的头文件,该文件的扩展名为“h”。所有的头文件都是“.h”扩展。在#的头文件 include
{
printf("Hallow World!\n"); /* 标准输出函数 */
}
/* 源程序结束 */
/* 运行下面的程序,没有出现运行结果。
void main(void);
// 函数声明
void main(void)
// main 函数
{
;
}
比较例 1.2 以及上面的程序两者之间有 2 个方面差异。
变量的存储类型
了解变量的存储类型。静态变量与动态变量的区别
变量的取值范围
了解不同数据类型的不同取值范围。
运算符
学习自增、自减运算符及运算符的补充
赋值运算符
了解赋值运算符(+=,*=,+=,-=,*=,/=,%=)。
变量和符号常量的类型声明
学习有关变量和符号常量的类型声明。
枚举常量
了解枚举常量。
1.1 绪论
上一节讲述了字符的输出,接下来学习怎样在屏幕显示键盘输入的整数。下 面通过程序来举例说明。
/*例 1.3 程序功能是:屏幕显示“请输入以个整数”,然后从键盘输入一个 整数,屏幕输出所输入的整数,换行结束。*/
例 1.3
/*源程序开始*/
#include <stdio.h>
void main(void);
上面的程序中的 main 函数是必需的。C 程序的执行是从 main 函数开始的。
重点:C 语言中只能有一个 main 函数。
第 4 行的'{'表明 main 函数本体的开始,6 行第'}'表示 main 函数本体的结束显 示。这样'{'和'}'中夹着的部分是主函数的函数体。
第 5 行的”;”用来表明语句的结束。main()函数既可以是无参函数,也可以 是有参的函数。对于有参的形式来说,就需要向其传递参数。但是其它任何函数 均不能调用 main()函数。 */
void main(void); void main(void)
{ ;
}
/* 函数声明 */ /* main 函数 */
/* 源程序结束 */
函数声明
/* 函数声明是对编译系统的说明,说明函数的类型,参数个数及类型。
重点:函数声明使源程序变得更清晰。
函数
函数就是功能。每一个函数用来实现一个特定功能。函数名应反映其代表的 功能。
1.3 字符输出
C 语言源程序可以实现各种功能,如程序 1.2 所示,能够将字符在屏幕上显 示。编译源程序,屏幕将显示 Hallow World 字符。
例 1.2
/* 源程序开始 */
#include <stdio.h>
/*编译预处理指令 */
void main(void);
/* 定义主函数 */
void main(void)
2.简洁、紧凑、灵活
Turbo C 共有 43 个关键字,9 种控制语句,程序书写自由,主要以小写字母 表示,压缩了一切不必要的成分。C 语言语法现在不太严格,程序设计自由度大, 例如对数组边界不做检查,整型、字符型、逻辑型数据可以通用。
3.运算符丰富
C 语言共有 44 种运算符,把括号、赋值、强制类型转换等都作为运算符处 理从而使 C 语言的运算符类型极其丰富,表达式类型多样化,灵活使用各种运算 符,可以实现在其他高级语言中难以实现的运算。
编译是读取源程序(字符流),对之进行词法和语法的分析,将高级语言指 令转换为功能等效的汇编代码,源文件的编译过程包含两个主要阶段:
第一个阶段是预处理阶段,在正式的编译阶段之前进行。预处理阶段将根据 已放置在文件中的预处理指令来修改源文件的内容。如#include 指令就是一个 预处理指令,它把头文件的内容添加到.c 文件中。这个在编译之前修改源文件 的方式提供了很大的灵活性,以适应不同的计算机和操作系统环境的限制。一个 环境需要的代码跟另一个环境所需的代码可能有所不同,因为可用的硬件或操作 系统是不同的。在许多情况下,可以把用于不同环境的代码放在同一个文件中, 再在预处理阶段修改代码,使之适应当前的环境。
重点:标准库函数由 ANSI 规范。
printf( )函数中“”之间的格式控制的内容将会标准输出。标准输出是由屏 幕输出,标准输入是由键盘输入。标准输入或者输出的程序也将被视为文件。
包含文件
main 函数的函数声明和上面函数声明相同(void main(void );),但是 printf 函数的函数声明与 main 函数声明不同,其声明如下:
第二个阶段编译、优化阶段,经过预编译得到的输出文件中,只有常量;如 数字、字符串、变量的定义,以及 C 语言的关键字。
必要的软件及 c 语言编译器
如果计算机使用的是 windows 系统的话,可以使用自带的记事本软件编写程 序。以文本文件的形式保存 C 语言源文件,其文件扩展名为.C 。编译时使用一个
4.中级语言
C 语言把高级语言的基本结构与低级语言的实用性结合起来。它可以像汇编 语言一样对位、字节和地址进行操作,这三者是计算机最基本的工作单元,C 语 言可实现汇编语言的绝大部分功能。
5.移植性好
用 C 语言编写的程序移植性好,生成的目标代码质量高,程序执行速度快。
6.功能强大
C 语言有丰富的库函数、强大的图形功能,有预处理能力,和其他语言如汇 编语言、Pascal 语言、数据库语言等的接口容易实现,C 程序中还可以直接调用 DOS 命令。因此,C 语言适合于编写各种系统软件、工具软件等大型软件。目前, 在工业计算机控制系统开发中,越来越多的人都使用 C 语言来编写控制软件。
其他形式的注释
C++中可以用//注释。现在 C 语言中也可以采用这种注释方式。如果有//则 表明本行结束是注释,这种注释可以单独占一行,也可以出现在一行中其他内容 的右侧。此种注释以//开始以换行符结束。也就是说这种注释不能跨行。如果一 行内容写不下,可以用多个单行注释。
重点:编译器不同允许的注释方式也不同。 /* * 可以这写注释。 * */
C 语言的特点
1.结构化语言
结构化语言的一个显著特点是代码和数据的分隔化,即程序的各部分除了必 要的信息交流外彼此互不影响,相互隔离。C 语言的主要结构成分是函数,函数 是 C 语言的基本结构模块,所有的程序活动内容都包含在其中,函数在程序中被 定义完成独立的任务,独立地编译成目标代码,这样可以实现程序的模块化。C 语言中,另一个实现程序结构化和分离化的方法是使用符合语句,复合语句是作 为一个语句对待的,且具有逻辑联系的程序语句的组合,它是一个逻辑单元。
C 语言的产生与发展
C 语言是 1972 年由美国的 Dennis Ritchie 设计发明的, 并首次在 UNIX 操 作 系 统 的 DEC PDP-11 计 算 机 上 使 用 。 它 由 早 期 的 编 程 语 言 BCPL( Basic Combind Programming Language) 发展演变而来。在 1970 年, AT&T 贝尔实验室的 Ken Thompson 根据 BCPL 语言设计出较先进的并取 名为 B 的语言, 最后导了 C 语言的问世。 随着微型计算机的日益普及, 出现了 许多 C 语言版本。由于没有统一的标准, 使得这些 C 语言之间出现了一些不一 致的地方。为了改变这种情况, 美国国家标准 研究所(ANSI)为 C 语言制定了一 套 ANSI 标准, 成为现行的 C 语言标准。
第 1 章 C 语言概述
本章知识要点:
绪论
什么是 C 语言,简单介绍能够执行的软件。
最短的 C 语言源代码
如何写注释、函数声明、main 函数、函数与堆栈、编码风格等问题的学习。
字符输出
包含文件、标准库函数、学习头文件是什么。
整数输入输出
变量类型、范围、标准库函数 scanf()的简单介绍
字符输入输出
void main(void)
Fra Baidu bibliotek
{
int n;
/*声明一个整型变量 */
printf("请输入一个整数");
scanf("%d", \n);
/**********************************
*
这样的写法*
*
尝试
*
***********************************/
1.2.2 C 语 言源程序
/* 程序例 1.1 是最简单的 C 语言程序,在 C 语言编译器内即可编译执行。 */
例 1.1 /* 源程序开始 */
函数的定义是为了调用此函数。在调用有参函数是,主调函数与被调函数之 间有数据传递关系。在定义函数时函数名括号中的变量名称为“形式参数”(简 称形参),在主调函数中函数调用一个函数时,函数名后面括号中的参数称为“实 际参数”(简称实参)。在调用函数过程中,系统会把实参的值传递给被调用函 数的形参。
main 函数
C 语言编译系统(如 TurboC 2.0 ,VC++6.0 等)对 C 语言源程序进行语法检查 和翻译,生成同名的“.OBJ”目标文件。链接时将目标文件和系统提供的标准库 函数等连接在一起,生成 一个同名的“.EXE”可执行文件。执行时若脱离 C 语言编译系统,可在操作系统下键入文件名直接运行。本书是以 TurboC 2.0 为基 础来介绍的。
计算机有栈(stack)的一种特殊的内存位置。其中存储的数据,取出的时 候会先取出后放进的数据,也就是 LIFO(后进先出)的存储方式。
函数的参数是用来指定参数的名字和类型,以便在调用函数时向它们传递数 据,参数之间用;隔开。对无参数函数不需要这项。
函数名后面的括号中为 void 或者为空的,则表示函数没有参数。上面程序 中 main 函数中的 void 表示没有参数。
1.2 简单的 C 语言源程序
前面说过 C 语言是一种程序语言,程序中包含函数和注释,下面来对 C 语 言中的注释以及相关函数进行详细说明。
1.2.1 注释
/* 注释 */ 上面一行表示注释。注释以'/* '开始、以' */'结束。 编译程序忽略注释开始符到注释结束符间的任何文本,注释可出现在程序的 任何位置,但它不能出现在关键字或标识符中间。这种注释可以包含多行内容。 编译系统发现一个/*后,就开始找注释结束符*/,把两者之间的内容作为注释。 重点:注释以'/* '开始以' */'结束。 注释不能嵌套使用,即一个注释内不能含有另一个注释。
7.编译语言
C 语言是编译语言,用 C 语言写的源程序必须经过编译后才能运行。
编译步骤
C 语言的编译链接过程要把我们编写的一个 c 程序(源代码)转换成可以在 硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式 源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的 启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。整个代码的 编译过程分为编译和链接两个过程。
了解 char 型和数组、键盘输入字符、屏幕显示输入的字符。
浮点数输入输出
了解 double 型变量、输入 2 个浮点数、屏幕输出其平均值。
printf( )和 scanf( )函数的返回值 了解符号常量函数返回值标准库函数 printf( )和 scanf( )的函数返回值。
定义函数
定义函数的方法。输入一个整数,将其值的一半作为返回值。
标准库函数
main 函数本体里面有这样一行函数:
printf("Hallow World!\n"); // 标准输出函数
主函数调用了一个 printf 函数,函数参数是 Hallow World!\n。其中\n 表示换 行,是换行符。
printf 函数是屏幕输出函数,这个功能是是由 ANSI(美国国家标准协会)规 范的函数。此函数包含在标准库函数中。
语句,使用的是“<>”。也可以用“' ”'自己编写头文件。例如,你会是这样的#include“my.h”。
重点:头文件是’.h’扩展。
在编辑器里可以看到 stdio.h 的内容,在以后的学习中将会遇到各种各样的 头文件,但是头文件里的内容不能改写。
重点:绝对不能改写头文件里的内容。 */
1.4 整数的输入输出
#include <stdio.h> // 引用文件
这是编译预处理命令。编译预处理以#开始。
重点:编译预处理以#开始,行末不加;
include 命令是说明<>中包含的文件。
“stdio.h 中'是标准库函数的头文件。如 printf()的函数声明写在“stdio.h”中。所 谓的头文件,该文件的扩展名为“h”。所有的头文件都是“.h”扩展。在#的头文件 include
{
printf("Hallow World!\n"); /* 标准输出函数 */
}
/* 源程序结束 */
/* 运行下面的程序,没有出现运行结果。
void main(void);
// 函数声明
void main(void)
// main 函数
{
;
}
比较例 1.2 以及上面的程序两者之间有 2 个方面差异。
变量的存储类型
了解变量的存储类型。静态变量与动态变量的区别
变量的取值范围
了解不同数据类型的不同取值范围。
运算符
学习自增、自减运算符及运算符的补充
赋值运算符
了解赋值运算符(+=,*=,+=,-=,*=,/=,%=)。
变量和符号常量的类型声明
学习有关变量和符号常量的类型声明。
枚举常量
了解枚举常量。
1.1 绪论
上一节讲述了字符的输出,接下来学习怎样在屏幕显示键盘输入的整数。下 面通过程序来举例说明。
/*例 1.3 程序功能是:屏幕显示“请输入以个整数”,然后从键盘输入一个 整数,屏幕输出所输入的整数,换行结束。*/
例 1.3
/*源程序开始*/
#include <stdio.h>
void main(void);
上面的程序中的 main 函数是必需的。C 程序的执行是从 main 函数开始的。
重点:C 语言中只能有一个 main 函数。
第 4 行的'{'表明 main 函数本体的开始,6 行第'}'表示 main 函数本体的结束显 示。这样'{'和'}'中夹着的部分是主函数的函数体。
第 5 行的”;”用来表明语句的结束。main()函数既可以是无参函数,也可以 是有参的函数。对于有参的形式来说,就需要向其传递参数。但是其它任何函数 均不能调用 main()函数。 */
void main(void); void main(void)
{ ;
}
/* 函数声明 */ /* main 函数 */
/* 源程序结束 */
函数声明
/* 函数声明是对编译系统的说明,说明函数的类型,参数个数及类型。
重点:函数声明使源程序变得更清晰。
函数
函数就是功能。每一个函数用来实现一个特定功能。函数名应反映其代表的 功能。
1.3 字符输出
C 语言源程序可以实现各种功能,如程序 1.2 所示,能够将字符在屏幕上显 示。编译源程序,屏幕将显示 Hallow World 字符。
例 1.2
/* 源程序开始 */
#include <stdio.h>
/*编译预处理指令 */
void main(void);
/* 定义主函数 */
void main(void)
2.简洁、紧凑、灵活
Turbo C 共有 43 个关键字,9 种控制语句,程序书写自由,主要以小写字母 表示,压缩了一切不必要的成分。C 语言语法现在不太严格,程序设计自由度大, 例如对数组边界不做检查,整型、字符型、逻辑型数据可以通用。
3.运算符丰富
C 语言共有 44 种运算符,把括号、赋值、强制类型转换等都作为运算符处 理从而使 C 语言的运算符类型极其丰富,表达式类型多样化,灵活使用各种运算 符,可以实现在其他高级语言中难以实现的运算。