日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

c语言的积木编程,c语言入门第3节,掌握它就能随心所欲的编程了,自己造积木...

發(fā)布時(shí)間:2023/12/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言的积木编程,c语言入门第3节,掌握它就能随心所欲的编程了,自己造积木... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前面兩節(jié)介紹了如何快速搭建 C 語(yǔ)言開(kāi)發(fā)學(xué)習(xí)環(huán)境,并且給出并解釋了 hello world 的代碼。上一節(jié)介紹了C語(yǔ)言的函數(shù),應(yīng)該注意到,到目前為止,我們使用的函數(shù)都是現(xiàn)有的系統(tǒng)函數(shù)(例如 printf,sin 等函數(shù))。事實(shí)上,實(shí)際需求通常是非常復(fù)雜的,只依靠現(xiàn)有的函數(shù)很難完成。好在我們可以根據(jù)需求,自己定義 C 函數(shù)。

image

可以把一個(gè)函數(shù)看作是一塊積木,各種各樣的積木才能堆積成復(fù)雜的建筑。只有幾種積木,能完成的建筑太有限了,如果能夠自己造各種各樣的積木,再?gòu)?fù)雜的建筑也能完成。

通過(guò)前面兩節(jié)的內(nèi)容,我們已經(jīng)了解函數(shù)定義的語(yǔ)法了:

返回值類(lèi)型 函數(shù)名(參數(shù)列表)

{

語(yǔ)句列表

}

注意函數(shù)名在相應(yīng)可見(jiàn)域內(nèi)要保持唯一性,例如,在 main 函數(shù)所在文件里定義的函數(shù)名不能也為 main。再啰嗦一下 main 函數(shù),主要是因?yàn)樗悄J(rèn)的入口函數(shù),比較特殊。

Old Style C的風(fēng)格的 main 函數(shù)定義寫(xiě)成 main(){...} 形式,不寫(xiě)返回值類(lèi)型也不寫(xiě)參數(shù)列表。Old Style C規(guī)定不寫(xiě)返回值類(lèi)型就表示返回int型,不寫(xiě)參數(shù)列表就表示參數(shù)類(lèi)型和個(gè)數(shù)沒(méi)有明確指出。這種寬松的規(guī)定會(huì)導(dǎo)致很多復(fù)雜的Bug產(chǎn)生,現(xiàn)在的 C 也保持了這種寫(xiě)法的兼容,但是鑒于它可能會(huì)產(chǎn)生 bug,還是不要這樣寫(xiě)。

其實(shí)系統(tǒng)在調(diào)用 main 函數(shù)時(shí)是傳參數(shù)的,所以 main 函數(shù)最標(biāo)準(zhǔn)的形式應(yīng)該是 int main(int argc, char * argv[]),這種參數(shù)傳遞在 linux 下使用起來(lái)非常方便,以后用到了再詳細(xì)解釋。C標(biāo)準(zhǔn)也規(guī)定了 int main(void) 這種形式,如果不使用系統(tǒng)傳進(jìn)來(lái)的兩個(gè)參數(shù)也可以寫(xiě)成這種形式。但除了這兩種形式之外,以其它形式定義main函數(shù)都是錯(cuò)誤的或不可移植的。

image

自定義函數(shù)

在了解了自定義函數(shù)的一些限制后,很容易就可以寫(xiě)出如下代碼。下面的代碼中,我們定義了 printA 函數(shù),它的參數(shù)為空,也沒(méi)有返回值,僅僅是打印出一個(gè)字母 “A”。

#include

#include

void printA(void)

{

printf("A\n");

}

int main()

{

printA();

return 0;

}

我們?cè)?codeblocks 里執(zhí)行它,發(fā)現(xiàn)程序在控制臺(tái)中打印出了字母 A。

關(guān)于 codeblocks 的安裝和使用,可參照第一節(jié)。

image

以后如果想打印 A,只需要執(zhí)行 printA 函數(shù)就可以了。更進(jìn)一步的,我們自己定義的 printA 函數(shù)也可以當(dāng)做系統(tǒng)函數(shù)(例如)一樣嵌套使用,請(qǐng)看如下代碼:

#include

#include

void printA(void)

{

printf("A\n");

}

void print2A(void)

{

printA();

printA();

}

int main()

{

print2A();

printf("----\n");

print2A();

return 0;

}

我們又新定義了一個(gè)函數(shù) print2A,它的功能就是在控制臺(tái)打印兩個(gè) A。在 codeblocks 里執(zhí)行,發(fā)現(xiàn)與預(yù)期一致。

image

體會(huì)

從上面的簡(jiǎn)單例子中,可以總結(jié)出以下信息:

同一個(gè)函數(shù)可以調(diào)用多次。

可以用一個(gè)函數(shù)去調(diào)用另一個(gè)函數(shù),第二個(gè)函數(shù)可以去調(diào)用第三個(gè)函數(shù)。

調(diào)用自定義的函數(shù),是通過(guò)我們?nèi)〉拿终{(diào)用的,例如 main 函數(shù)中調(diào)用 print2A();

函數(shù)可以使代碼更簡(jiǎn)潔,原本打印兩個(gè) A 需要兩行代碼,現(xiàn)在只需要 print2A 一行就可以了。

你可能會(huì)說(shuō),我定義 print2A 就用了 5 行啊,哪里簡(jiǎn)潔了。可是,以后只要遇到需要打印兩個(gè) A 的地方,我都可以調(diào)用 print2A,如果有 10 個(gè)地方需要打印兩個(gè) A 呢?另外,如果有一天,我想在打印兩個(gè) A 的時(shí)候不換行,那我只需要修改 printA,把里面的 “\n”刪掉就可以了,而不用去找那 10 個(gè)需要打印兩個(gè) A 的地方逐個(gè)修改。

讀代碼和讀文章不一樣,按從上到下從左到右的順序讀代碼未必是最好的。比如上面的例子,按順序應(yīng)該是先看 printA 再看 print2A 再看 main。不過(guò),如果換一個(gè)角度,按代碼的執(zhí)行順序來(lái)讀也許會(huì)更好:

image

因?yàn)?main 是入口函數(shù),所以第一句要執(zhí)行的就是 print2A 函數(shù),那它是什么功能呢?于是目光移到 print2A 函數(shù),它的第一句是 printA 函數(shù),于是進(jìn)入 printA 函數(shù)。奧,知道了 print2A 先要打印一個(gè) A,然后又要執(zhí)行 printA 函數(shù),又打印了一個(gè) A。這下知道了,main 函數(shù)里的第一句要打印兩個(gè) A。

實(shí)際上,在很多大型項(xiàng)目中,要熟悉它的代碼結(jié)構(gòu),第一件事往往就是找到入口函數(shù)。

總結(jié)

以上是生活随笔為你收集整理的c语言的积木编程,c语言入门第3节,掌握它就能随心所欲的编程了,自己造积木...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。