c语言入门第2节,程序可以随便写吗?什么是函数?

上一节,我们搭建了c语言开发环境后,写了一个在控制台打印 "Hello world!"的程序,不过,对代码倒是并没有说很细。下面把上一节的代码再写一遍,详细说说。

image
#include <stdio.h>
#include "stdlib.h"
/* 打印 Hello world!  */
int main()
{
    printf("Hello world!\n");       // 打印语句
    return 0;
}
image

还记的在《》一节中,我们把编程语言划分到形式语言吗?形式语言对语法要求非常苛刻,这里说的语法严格,主要是指符号和结构要严格按照规则来。

  • xxx.h 在 c 语言中叫“头文件”,它是一个工具箱的目录,有了它,我们写的程序用到一些工具时,程序才知道从哪里找。
  • include 负责将头文件导入,它要独立占一行,头文件要用 <> 或者 "" 包裹,关于 <> 和 "" 的区别,接下来会详细介绍

  • main 是一个 c 语言里的特殊符号,它是默认的入口函数。整个程序只能由一个入口函数,程序从这里开始执行。
  • 函数后面通常会有 (),紧接着是 {} 包裹属于本函数的代码。
  • 函数的语句要用 ; 结尾
  • 可以看出,函数里面的语句比 main 那一行都缩进了一些。在代码中,可以用若干个空格和 tab 缩进。不过这只是为了美观,让代码看着舒服一些。

c 程序写成 int main(){...return 0;} 也是可以的,但是这样写的可读性和美观度显然不如上面那种写法。

c 程序要严格按照语法规则来,否则在编译时就会报错。关于“编译”和“报错”可以参照我之前的文章。

image

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 中执行它,输出如下:

image

关于如何安装和使用 codeblocks 可参照第一节。

在数学中,使用函数时可以省略括号,例如 sin pi/2,而 C 语言中的函数则一定要使用 (),例如 sin(pi/2)。在C语言的术语中,pi/2是参数,sin是函数,使用 sin(pi/2) 就是程序员常说的“函数调用”。

事实上,printf("...",...); 也是一种函数调用。但是 printf 感觉不像一个数学函数,为什么呢?因为像 sin 这种函数,传递一个参数给它,它会返回给我们一个计算后的值,我们调用 sin 函数就是为了得到它的返回值。至于 printf 函数,我们并不关心它的返回值,更关心的是它的“副作用”(计算返回值的过程中,往控制台打印的字符。)。事实上,printf 也有返回值,它返回的是实际打印的字符数。

C 语言函数可以有“副作用”,这是它与数学函数的根本区别。

image

最后要说一点

事实上,我的文章中有一些概念说的并不太专业,比如“头文件是一个工具箱的目录”,而没有说它是一系列“函数接口的声明”。这是因为我觉得一开始太专业,反而不利于理解。慢慢的介绍多了,我也尽量用一些比较专业的词。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容