c語言入門第2節(jié)啃炸,程序可以隨便寫嗎?什么是函數(shù)皱埠?

上一節(jié)肮帐,我們搭建了c語言開發(fā)環(huán)境后咖驮,寫了一個在控制臺打印 "Hello world!"的程序边器,不過,對代碼倒是并沒有說很細托修。下面把上一節(jié)的代碼再寫一遍忘巧,詳細說說。

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

還記的在《》一節(jié)中睦刃,我們把編程語言劃分到形式語言嗎砚嘴?形式語言對語法要求非常苛刻涩拙,這里說的語法嚴格际长,主要是指符號和結構要嚴格按照規(guī)則來。

  • xxx.h 在 c 語言中叫“頭文件”兴泥,它是一個工具箱的目錄工育,有了它,我們寫的程序用到一些工具時搓彻,程序才知道從哪里找如绸。
  • include 負責將頭文件導入嘱朽,它要獨立占一行,頭文件要用 <> 或者 "" 包裹怔接,關于 <> 和 "" 的區(qū)別搪泳,接下來會詳細介紹

  • main 是一個 c 語言里的特殊符號,它是默認的入口函數(shù)扼脐。整個程序只能由一個入口函數(shù)岸军,程序從這里開始執(zhí)行。
  • 函數(shù)后面通常會有 ()瓦侮,緊接著是 {} 包裹屬于本函數(shù)的代碼凛膏。
  • 函數(shù)的語句要用 ; 結尾
  • 可以看出,函數(shù)里面的語句比 main 那一行都縮進了一些脏榆。在代碼中猖毫,可以用若干個空格和 tab 縮進。不過這只是為了美觀须喂,讓代碼看著舒服一些吁断。

c 程序寫成 int main(){...return 0;} 也是可以的,但是這樣寫的可讀性和美觀度顯然不如上面那種寫法坞生。

c 程序要嚴格按照語法規(guī)則來仔役,否則在編譯時就會報錯。關于“編譯”和“報錯”可以參照我之前的文章是己。

image

C 語言中的函數(shù)

在數(shù)學中有各種各樣的數(shù)學函數(shù)又兵,比如 sin ln 等函數(shù),sin(pi/2)=1卒废,ln1 = 0 等等沛厨。在 C 語言中,我們當然也可以使用這些函數(shù)摔认,請看如下代碼:

#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 中包含各種數(shù)學函數(shù)的目錄逆皮,只要將其用 #include 導入,在 main 中使用 sin参袱,log 函數(shù)時电谣,程序才知道從哪里找這些函數(shù)。我們在 codeblocks 中執(zhí)行它抹蚀,輸出如下:

image

關于如何安裝和使用 codeblocks 可參照第一節(jié)剿牺。

在數(shù)學中,使用函數(shù)時可以省略括號环壤,例如 sin pi/2晒来,而 C 語言中的函數(shù)則一定要使用 (),例如 sin(pi/2)镐捧。在C語言的術語中潜索,pi/2是參數(shù)臭增,sin是函數(shù),使用 sin(pi/2) 就是程序員常說的“函數(shù)調用”竹习。

事實上誊抛,printf("...",...); 也是一種函數(shù)調用。但是 printf 感覺不像一個數(shù)學函數(shù)整陌,為什么呢拗窃?因為像 sin 這種函數(shù),傳遞一個參數(shù)給它泌辫,它會返回給我們一個計算后的值随夸,我們調用 sin 函數(shù)就是為了得到它的返回值。至于 printf 函數(shù)震放,我們并不關心它的返回值宾毒,更關心的是它的“副作用”(計算返回值的過程中,往控制臺打印的字符殿遂。)诈铛。事實上,printf 也有返回值墨礁,它返回的是實際打印的字符數(shù)幢竹。

C 語言函數(shù)可以有“副作用”,這是它與數(shù)學函數(shù)的根本區(qū)別恩静。

image

最后要說一點

事實上焕毫,我的文章中有一些概念說的并不太專業(yè),比如“頭文件是一個工具箱的目錄”驶乾,而沒有說它是一系列“函數(shù)接口的聲明”邑飒。這是因為我覺得一開始太專業(yè),反而不利于理解轻掩。慢慢的介紹多了幸乒,我也盡量用一些比較專業(yè)的詞懦底。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末唇牧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子聚唐,更是在濱河造成了極大的恐慌丐重,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杆查,死亡現(xiàn)場離奇詭異扮惦,居然都是意外死亡,警方通過查閱死者的電腦和手機亲桦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門崖蜜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浊仆,“玉大人,你說我怎么就攤上這事豫领÷帐粒” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵等恐,是天一觀的道長洲劣。 經常有香客問我,道長课蔬,這世上最難降的妖魔是什么囱稽? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮二跋,結果婚禮上战惊,老公的妹妹穿的比我還像新娘。我一直安慰自己扎即,他們只是感情好样傍,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铺遂,像睡著了一般衫哥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上襟锐,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天撤逢,我揣著相機與錄音,去河邊找鬼粮坞。 笑死蚊荣,一個胖子當著我的面吹牛,可吹牛的內容都是我干的莫杈。 我是一名探鬼主播互例,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼筝闹!你這毒婦竟也來了媳叨?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤关顷,失蹤者是張志新(化名)和其女友劉穎糊秆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體议双,經...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡痘番,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汞舱。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡伍纫,死狀恐怖,靈堂內的尸體忽然破棺而出昂芜,到底是詐尸還是另有隱情翻斟,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布说铃,位于F島的核電站访惜,受9級特大地震影響,放射性物質發(fā)生泄漏腻扇。R本人自食惡果不足惜债热,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望幼苛。 院中可真熱鬧窒篱,春花似錦、人聲如沸舶沿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽括荡。三九已至高镐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間畸冲,已是汗流浹背嫉髓。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留邑闲,地道東北人算行。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像苫耸,于是被迫代替她去往敵國和親州邢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內容