学习一门新语言的惟一途径就是使用它来编程。对于初学者来说, 编写的第一个程序几乎都是相同的,即在屏幕上显示“Hello, world”,专业说法为打印“Hello, world”。
/* 第一个C语言程序 打印 Hello, world */ #include<stdio.h> //包含头文件stdio.h int main(){ // 主函数 printf("Hello, word\n"); // 打印字符串 return 0; // 返回0,表示程序正确运行 }
尽管这个程序很简单,但对初学者来说,它仍然可能成为一大障碍,因为要实现这个目的,首先要编写代码,然后编译、链接并运行,最后看到输出结果。掌握了这些操作细节以后,其它事情就比较容易了。
关于编译和链接将在下一节说明,这里先对程序进行解释:
第1行包含标准库文件,include称为文件包含命令,扩展名为.h的文件称为头文件。
第2行定义名为main的函数,它不接受参数值;main函数的语句都被括在花括号中;int为main函数返回值类型。
第3行打印“Hello, world”,main函数调用库函数printf以显示字符序列。
第4行表示main函数的返回值为0,return让函数返回一个值。
第5行结束main函数,花括弧必须成对出现。
位于“/* */”中和“//”后面的内容为注释,用来对程序进行说明;注释在编译时会被自动忽略。
一个C语言程序,无论其大小,都是由函数和变量组成的。
函数具有某些特定功能,能执行特定操作;函数中包含一些语句,以说明操作的过程。变量则用于存储计算过程中使用的值。
在本例中,函数的名字为main。通常情况下,函数的命名没有限制,但main是一 个特殊的函数名,每个程序都从main函数的起点开始执行,这意味着每个程序都必须在某 个位置包含一个main函数。
main函数通常会调用其它函数来帮助完成某些工作,被调用的函数可以是我们自己编写的,也可以来自于函数库。上述程序段中的第一行语句#include 用于告诉编译器在本程序中包含标准输入/输出库。许多C语言源程序的开始处都包含这一行语句。我们将在后续章节对标准库进行详细介绍。
函数之间进行数据交换的一种方法是调用函数向被调用函数提供一个值(称为参数)列表。函数名后面的一对圆括号将参数列表括起来。在本例中,main函数不需要任何参数,因此用空参数表( )表示。
函数中的语句用一对花括号{}括起来。本例中的main函数包含下面两条语句:
printf("Hello, word\n"); return 0;
调用函数时,只需要使用函数名加上用圆括号括起来的参数表即可。上面这条语句将"hello, world\n"作为参数调用printf函数。printf是一个用于打印输出的库函数,在此处, 它打印双引号中间的字符串。
用双引号括起来的字符序列称为字符串或字符串常量,如"hello, world\n"就是一个字符串。目前我们仅使用字符串作为printf及其它函数的参数。
在C语言中,字符序列\n表示换行符,在打印中遇到它时,输出打印将换行,从下一行的左端行首开始。如果去掉字符串中的\n(这是个值得一做的练习),即使输出打印完成后也不会换行。在printf函数的参数中,只能用\n表示换行符。如果用程序的换行代替,例如:
printf("Hello, word
");
C编译器将会产生一条错误信息。
printf函数永远不会自动换行,这样我们可以多次调用该函数以分阶段得到一个长的输出行。上面给出的第一个程序也可以改写成下列形式:
#include<stdio.h> int main(){ printf("Hello, "); printf("word"); printf("\n"); return 0; }
这段程序与前面的程序的输出相同。