C语言入门编程
C - Language
Basic Programming
第1章/第2节
The
First Chapter/Section 2
1.5.3定义main()函数
下面5行指令定义了main()函数:
int
main(void)
{
printf(%26quot;hello
Thomas·Computer!%26quot;);
return 0;
}
函数是两个括号之间执行某组操作的一段代码。每个C程序都由一个或多个函数组成,每个C程序都必须有一个main()函数—因为每个程序总是从这个函数开始执行。因此假定创建、编译、链接了一个名为progname.exe的文件。执行它时,操作系统会调用这个程序的main()函数。
定义main()函数的第一行代码如下:
int
main(void)
它定义了main()函数的起始,注意这行代码的末尾没有分号。定义main()函数的第一行代码开头是一个关键字int,它表示main()函数的返回值类型,关键字int是表示main()函数返回一个整数值。执行完main()函数后返回的整数值表示返回给操作系统的一个代码,它表示程序的状态。在下面的语句中,指定了执行完main()函数后要返回的值:
return
0;
这个return
语句结束main()函数的执行,把0返回给操作系统。从main()函数返回0表示,程序正常终止,而返回非0值表示异常,换言之,在程序结束时,发生了不应该发生的事情。
紧跟在函数名main后的括号,带有函数main()开始执行时传递给它的信息,在这个例子里,括号内的void,表示没有给函数传递任何数据,后面会介绍如何将数据传递给函数main()或程序内的其他函数。
函数main()可以调用其他函数,这些函数又可以调用其他函数。对于每个被调用的函数,都可以在函数名后面的括号中给函数传递一些信息。在执行到函数体中的return语句时,就停止该函数的执行,将控制权返回给调用函数(对于函数main(),曾将控制权返回给操作系统)。
1.5.4
关键字
在C语言中,关键字是有特殊意义的字,所以在程序中不能将关键字用于其他目的(不让将关键字作为变量名)。关键字也称为保留字。在前面的例子里,int就是一个关键字,void和return也是关键字。C语言有许多关键字,你在我的博客学习C语言的过程中,将逐渐熟悉这些关键字。
1.5.5 函数体
main()函数的一般结构:
函数体是在函数名称后面位于起始及结束两个大括号之间的代码块。它包含了定义函数功能的所有语句。这个例子的main()函数体非常简单,只有两个语句:
{
printf(%26quot;你好!高蔚天
先生%26quot;);
return 0;
}
每个函数都必须有函数体,但函数体可以是空的,仅有起始及结束两个大括号,里面没有任何语句,在这种情况下,这个函数什么也不做。这样的函数有什么用?事实上,在开发一个包含很多函数的程序时,这种函数是非常有用的。我们可以声明一些用来解决手头问题的空函数,确定需要完成的编程工作,再为每个函数创建程序代码。这个方法有助于条理分明地、系统地建立程序。
注意:
在第1章/第1节中的1.3程序将大括号单独排为一行,这么做可以清楚地表示括号框起来的语句块从哪里起始和结束。大括号之间的语句通常缩进2个或多个空格,使大括号突出在前。这是个很好的编程格式,可以使语句块更容易阅读
1.5.6
输出信息
例子中的main()函数体包含了一个调用printf()函数的语句:
printf(%26quot;你好!高蔚天
先生!%26quot;);
printf()是一个标准的库函数,它将引号的信息输出到屏幕上,在这个例子里,调用这个函数会显示引号内的一段警示语:双引号内的字符串为字符串字面量。注意这行代码用分号做为结尾。
1.5.7
参数
包含在函数名(如上面语句中的
printf()函数)后的圆括号内的项称为参数,它指定要传送给函数的数据。当传送给函数的参数多于一个时,要用逗号分开。
在上面的例子中,函数的参数是双引号内的文本字符串。如果不喜欢例子中引号内的文本,可以改用自己想输出的句子。例如,使用高先生见到美丽的小姐说的第一句话:
int main(void)
{
printf(%26quot;哦!天啊!上帝啊!这位美丽而高贵的女士,你使我想起了蒙娜丽莎!%26quot;);
return 0;
}
修改源代码后,必须再次编译及链接程序,才可执行。
注意:
与C语言中所有可执行语句一样,printf()行的末尾必须有分号(这与定义语句或指令不同)。这是一个很容易犯的错误,尤其是初次使用C编程的人,老是忘了分号。
1.5.8
控制符
前面的程序可以改为输出两段句子。输入以下代码:
#include
%26lt;stdio.h%26gt;
int main(void)
{
printf(%26quot; My formula for
success? Rise early, work late, strike oil.%26quot;);
return 0;
}
输出的结果是:
My formula for
success?
Rise early, work late, strike
oil.
在printf()语句中,在文本的开头和第一句的后面,增加了字符
,它表示一个字符:换行符。
反斜杠()在字符串里有特殊的意义,它表示转义序列的开始。转义序列可以在字符串中插入无法指定的字符,例如制表符及换行,或编译器在某些情况下会混淆的字符,例如双引号一般用于界定字符串。反斜杠后面的字符表示是哪种转义序列。在这个例子里,n表示换行。还有其他许多转义序列。显然,反斜杠是有特殊意义的,所以需要一种方式在字符串中指定反斜杠。为此,应使用两个反斜杠()。同样,如果要输出双引号,就用%26quot;。
输入以下程序:
#include
%26lt;stdio.h%26gt;
int main(void)
{
printf(%26quot; %26quot;It is a
wise father that knows his own child.%26quot;
Shakespeare%26quot;);
return 0;
}
这个程序输出的结果如下:
“It is a
wise father that knows his own child.%26quot; Shakespeare
使用转义序列a可以发出声音,说明发生了有趣或重要的事情。输入以下的程序并执行:
#include
%26lt;stdio.h%26gt;
int main(void)
{
printf(%26quot;
你脑袋让门挤了!!a%26quot;);
return 0;
}
这个程序的输出如下所示带有声音。仔细聆听,你的计算机主板上的扬声器会发出鸣响。
你脑袋让门挤了!!
转义序列a表示发出鸣响。表1-1是转义序列表。
表1-1
转义序列
试着在屏幕上显示多行文本,在该文本中插入空格。使用
可以把文本放在多个行上,使用 可以给文本加上空格。以后的C语言入门编程文章中将大量使用转义序列。
Thomas·Computer 先生 著
中文名:高蔚天
先生
超级计算机人工智能基因母体研究所
SuperComputerArtificialIntelligenceGeneMatrixResearchInstitute