多个函数

截至目前,所有的程序都只使用了printf()函数。接下来我们来演示如何把自己的函数加入程序中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* two_func.c -- 一个文件中包含两个函数 */
#include <stdio.h>
void butler(void); /* C函数原型 */
int main(void)
{
printf("I will summon the butler function.\n");
butler();
printf("Yes. Bring me some tea and writeable DVDs.\n");

return 0;
}
void butler(void) /* 函数定义的开始 */
{
printf("You rang, sir?\n");
}

butler()函数在程序中出现了3次。第1次是函数原型(prototype),告知编译器在程序中要使用该函数;第 2 次以函数调用(function call)的形式出现在 main()中;最后一次出现在函数定义(function definition)中,函数定义即是函数本身的源代码。

在 main()中调用 butler()很简单,写出函数名和圆括号即可。当butler()执行完毕后,程序会继续执行main()中的下一条语句。

调试程序

在我们自己编写程序的过程中,会因为粗心大意犯一些错误,程序的错误通常叫做 bug,找出并修正错误的过程叫做调试(debug)。

通常来说程序的错误主要集中在三个方面:语法错误,语义错误,程序状态。

语法错误:C语言的语法错误指的是,把有效的C符号放在错误的地方。

语义错误:在C语言中,如果遵循了C规则,但是结果不正确,那就是犯了语义错误。

Tip:编译器无法检测语义错误,因为这类错误并未违反 C语言的规则。

程序状态:程序状态是在程序的执行过程中,某给定点上所有变量值的集合。它是计算机当前状态的一个快照。

关键字和保留标识符

关键字是C语言的词汇。它们对C而言比较特殊,不能用它们作为标识符(如,变量名)。许多关键字用于指定不同的类型,如 int。还有一些关键字(如,if)用于控制程序中语句的执行顺序。如下图:

保留标识符包括那些以下划线字符开头的标识符和标准库函数名,如printf()。

对C语言的了解在此篇结束,接下来开始学习C语言中的数据类型。