上一节,我们搭建了C语言开发环境后,写了一个在控制台打印 “Hello world!”的程序,不过,对代码倒是并没有说很细。下面把上一节的代码再写一遍,详细说说。
#include <stdio.h> #include "stdlib.h" /* 打印 Hello world! */ int main() { printf("Hello world!\n"); // 打印语句 return 0; }
还记的在《》一节中,我们把编程语言划分到形式语言吗?形式语言对语法要求非常苛刻,这里说的语法严格,主要是指符号和结构要严格按照规则来。
- xxx.h 在 c 语言中叫“头文件”,它是一个工具箱的目录,有了它,我们写的程序用到一些工具时,程序才知道从哪里找。
- #include 负责将头文件导入,它要独立占一行,头文件要用 <> 或者 “” 包裹,关于 <> 和 “” 的区别,接下来会详细介绍
- main 是一个 c 语言里的特殊符号,它是默认的入口函数。整个程序只能由一个入口函数,程序从这里开始执行。
- 函数后面通常会有 (),紧接着是 {} 包裹属于本函数的代码。
- 函数的语句要用 ; 结尾
- 可以看出,函数里面的语句比 main 那一行都缩进了一些。在代码中,可以用若干个空格和 tab 缩进。不过这只是为了美观,让代码看着舒服一些。
c 程序写成 int main(){…return 0;} 也是可以的,但是这样写的可读性和美观度显然不如上面那种写法。
c 程序要严格按照语法规则来,否则在编译时就会报错。关于“编译”和“报错”可以参照我之前的文章。
C 语言中的函数在数学中有各种各样的数学函数,比如 sin ln 等函数,sin(pi/2)=1,ln1 = 0 等等。在 C 语言中,我们当然也可以使用这些函数,请看如下代码:
#include <math.h> #include <stdio.h> int main() { double pi = 3.1416; printf("sin(pi/2)=%f\nln1=%f\n", sin(pi/2), log(1.0)); return 0; }
math.h 中包含各种数学函数的目录,只要将其用 #include 导入,在 main 中使用 sin,log 函数时,程序才知道从哪里找这些函数。我们在 codeblocks 中执行它,输出如下:
关于如何安装和使用 codeblocks 可参照。
在数学中,使用函数时可以省略括号,例如 sin pi/2,而 C 语言中的函数则一定要使用 (),例如 sin(pi/2)。在C语言的术语中,pi/2是参数,sin是函数,使用 sin(pi/2) 就是程序员常说的“函数调用”。
事实上,printf(“…”,…); 也是一种函数调用。但是 printf 感觉不像一个数学函数,为什么呢?因为像 sin 这种函数,传递一个参数给它,它会返回给我们一个计算后的值,我们调用 sin 函数就是为了得到它的返回值。至于 printf 函数,我们并不关心它的返回值,更关心的是它的“副作用”(计算返回值的过程中,往控制台打印的字符。)。事实上,printf 也有返回值,它返回的是实际打印的字符数。
C 语言函数可以有“副作用”,这是它与数学函数的根本区别。最后要说一点
事实上,我的文章中有一些概念说的并不太专业,比如“头文件是一个工具箱的目录”,而没有说它是一系列“函数接口的声明”。这是因为我觉得一开始太专业,反而不利于理解。慢慢的介绍多了,我也尽量用一些比较专业的词。
欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。