购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 声明区

本节视频教学录像:23分钟

2.2.1 头文件

一个C程序可以由若干个源程序文件组成,每一个源文件可以由若干个函数和预处理命令以及全局变量声明部分组成,每一个函数由函数首部和函数体组成。C程序的结构如图所示。

作为一名程序开发人员,不可能每次编写都从最底层开发。比如在上例中,要输入一串字符到输出设备上,我们需要做的仅是调用printf()函数,至于“Hello C!”是怎样显示的,我们并不关心。我们认识printf()函数,在编写程序时调用它,更需要让程序认识它,这样才能使用printf()函数提供的功能,这就需要使用#include <stdio.h>,包含标准输入输出头文件,这样程序就能够认识printf()函数,并执行其功能。

C提供有丰富的函数集,我们称之为标准函数库。标准函数库包括15个头文件,借助这些函数可以完成不同的功能。

例如,【范例2-1】中有#include<math.h>时,就可以使用该数学函数库头文件提供的如开平方函数sqrt(),求出半径radius为2时的开平方值1.414;又如,当程序包含头文件“malloc.h”时,就可以完成对内存申请和释放等功能。

2.2.2 函数声明

标准C语言引入了新的更好的函数声明方法,即用函数原型指定函数更多的信息,通过函数原型可以将函数的名字和函数类型以及形式参数的个数、类型、顺序通知编译系统,以便在调用函数时,系统可以对照检查。

函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。这3个元素被称为函数原型,函数原型描述了函数的接口。定义函数的程序员提供函数原型,使用函数的程序员就只需要对函数原型编辑即可。

函数声明的一般形式为:

函数返回类型 函数名(参数类型1,参数类型2,……);

函数声明包括函数的返回类型和函数名,来看下面这个例子。

01 int fun(int a, int b);

02 void display();

03 float fn (float x);

其中,int、void和float都是函数返回类型,也属于数据类型。fun、display和fn是所调用的函数名。也就是说,fun()函数返回的数据类型为整型int;display()函数返回的类型为void型,指函数无返回值;fn()返回的数据类型为浮点型float。

fun(int a, int b)函数内部的a和b为形参,其参数类型都为int型。fn (float x)函数内部参数x的类型为float型。函数声明中的形参名往往被忽略,如果声明中提供了形参的名字,也只是用作辅助文档。另外要注意函数声明是一个语句,后面不可漏分号!

进一步对函数做解释,需要注意的有以下几点。

(1)函数名称后面必须有小括号,不能省略,这是函数的特征。

(2)函数结束必须有分号,不能省略。

(3)字符串结尾有这样的内容“\n”,它叫做转义符,表示的含义是把光标移动到下一行的行首,也就是回车换行,因为我们无法直接通过键盘输入换行的指令,所以需要使用转义符;又比如输出内容后希望返回该行的行首,重新输出内容,键盘上也没有对应的功能键,我们就可以使用回车符转义符“\r”来代替。当然,转义还包含其他内容,后续章节中会详细讲述。

2.2.3 变量声明

在大多数语言中,在使用一个变量之前,都要对这个变量进行声明,C语言同样如此。那么,什么是变量的声明呢?有什么作用呢?变量的声明其实就是在程序运行前,告诉编译器程序使用的变量以及与这些变量相关的属性,包括变量的名称、类型和长度等。这样,在程序运行前,编译器就可以知道怎样给变量分配内存空间,可以优化程序。

变量的声明语句的形式如下:

变量类型名变量名

变量的声明包括变量类型名和变量名两个部分。来看下面的例子:

01 int num

02 double area

03 char ppt

其中,int、double和char是变量类型名,num、area和ppt是变量名。其实,变量类型名也是数据类型的一种,就是说变量num是int类型,area是double类型,ppt是char类型。

变量类型名是C语言自带的数据类型和用户自定义的数据类型。C语言自带的数据类型包括整型、字符型、浮点型、枚举型和指针类型等。

变量名其实就是一个标识符,当然,标识符的命名规则在此处同样适用。除此之外,变量命名的时候还需要注意以下几点。

(1)变量名区分大小写,变量Num和num是两个不同的变量。

(2)变量的命名最好与实际应用有关联,例如:num一般表示数量,area表示面积等。

(3)变量的命名必须在变量使用之前。

提示

如果变量没有经过声明而直接使用,则会出现编译器报错的现象。

下面用一个例子来验证声明必须在变量使用的前面。

【范例2-2】验证未声明的标识符不可用。

(1)在Visual C++ 6.0中,新建名为“undeclaredvar.c”的【Text File】文件。

(2)在编辑窗口中输入以下代码(代码2-2.txt)。

01 #include<stdio.h>

02 int main(void)

03 {

04 printf("output undeclaredvar num=%d\n",num);

05 return 0;

06 }

【运行结果】

编译后显示出错,信息如下:

undeclaredvar.c(4): error C2065: 'num' : undeclared identifier

【范例分析】

在此例子中,没有对标识符num进行声明就直接引用,编译器不知道num是什么,所以调试时编译器就会报错。

【拓展训练】

在第3句和第4句之间插入语句:

04 int num=10;

或者:

04 int num;

05 num=10;

检验一下程序能否运行,是否还报错。 01XdZhDAa8VGd8AdO+CIMltfaGjM9+gSAUIbf2QpvCIrf3bhOxB16IY3tX+tHkKD

点击中间区域
呼出菜单
上一章
目录
下一章
×