久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 淺(qian)談(tan)程序員的(de)開端(duan)——C語言

淺談程序員的開端——C語言(yan) 時間:2022-05-26      來源:華清遠見(jian)

技術總結:

在(zai)進行軟件開發的(de)(de)(de)時候,技(ji)術迭代更新速度極快。而想要快速掌握這些技(ji)術,需要非常扎實(shi)的(de)(de)(de)基礎(chu)才行。那么,現在(zai)我們就(jiu)(jiu)來談一談程序員的(de)(de)(de)開端——C語言。C語言中(zhong),最(zui)困難的(de)(de)(de)兩大知識點(dian)就(jiu)(jiu)當屬指針與函數。指針的(de)(de)(de)困難點(dian)倒不是(shi)在(zai)于它本身(shen),困難的(de)(de)(de)是(shi)指針與其(qi)他(ta)數據類(lei)型(xing)相結合(he),其(qi)形成的(de)(de)(de)組合(he)種(zhong)類(lei)較多,最(zui)后導(dao)致指針難以(yi)理解。下面(mian),我們就(jiu)(jiu)先從(cong)指針說(shuo)起。

指針的基礎:

指針的概念:

指(zhi)(zhi)針實際上(shang)就是地(di)址(zhi)(zhi)。指(zhi)(zhi)針是在計算機自動在內存(cun)(cun)(cun)中分配的(de)一(yi)塊(kuai)空間,該空間用(yong)(yong)來存(cun)(cun)(cun)儲地(di)址(zhi)(zhi)(該空間大小由(you)操作(zuo)系統(tong)來決定,64位操作(zuo)系統(tong),需(xu)要用(yong)(yong)64位,也就是8字節空間來保存(cun)(cun)(cun)地(di)址(zhi)(zhi)),而存(cun)(cun)(cun)儲的(de)這個地(di)址(zhi)(zhi),是該指(zhi)(zhi)針所指(zhi)(zhi)向(xiang)的(de)那塊(kuai)空間的(de)首地(di)址(zhi)(zhi)。int *p = &A;

我們想要通過指針取(qu)到A空(kong)間中(zhong)的(de)數(shu)據,可(ke)以使(shi)用*p來取(qu)(注(zhu)意:*p表示的(de)是(shi)A這塊空(kong)間,而不(bu)是(shi)A空(kong)間中(zhong)的(de)數(shu)據,就像int A; 變(bian)量名(ming)A,表示的(de)是(shi)A這個空(kong)間)。而A空(kong)間的(de)首地址可(ke)以由p或&A來表示。

這樣(yang),指針的本質(zhi)就講完了(le),是不(bu)是很(hen)就簡單?但這只是開始。

指針的組合:

指針與數組(zu)的(de)組(zu)合:

指(zhi)針(zhen)與(yu)數(shu)(shu)(shu)組(zu)(zu)的(de)(de)組(zu)(zu)合(he)有(you)很多,如(ru):數(shu)(shu)(shu)組(zu)(zu)指(zhi)針(zhen),多級(ji)指(zhi)針(zhen),函數(shu)(shu)(shu)指(zhi)針(zhen),結構體指(zhi)針(zhen)。數(shu)(shu)(shu)組(zu)(zu)指(zhi)針(zhen)中,比較難(nan)理解(jie)的(de)(de)就是,指(zhi)針(zhen)與(yu)二維(wei)數(shu)(shu)(shu)組(zu)(zu)的(de)(de)組(zu)(zu)合(he)。想要弄清楚指(zhi)針(zhen)與(yu)二維(wei)數(shu)(shu)(shu)組(zu)(zu)的(de)(de)組(zu)(zu)合(he),我們先來看一維(wei)數(shu)(shu)(shu)組(zu)(zu)。一維(wei)數(shu)(shu)(shu)組(zu)(zu)的(de)(de)。。。。。。

函數的基礎:

函數的概念:

函(han)(han)(han)數實際上就(jiu)是(shi)程(cheng)(cheng)(cheng)(cheng)序(xu)的(de)跳轉(zhuan),即(ji)先將當前(qian)(qian)程(cheng)(cheng)(cheng)(cheng)序(xu)的(de)狀(zhuang)(zhuang)態(tai)(tai)保存在棧中,然后(hou)跳轉(zhuan)到相對應的(de)函(han)(han)(han)數內,依次(ci)執(zhi)行(xing)函(han)(han)(han)數內的(de)程(cheng)(cheng)(cheng)(cheng)序(xu)指令。當函(han)(han)(han)數執(zhi)行(xing)完后(hou),函(han)(han)(han)數被釋放,然后(hou)恢復之前(qian)(qian)保存在棧中的(de)程(cheng)(cheng)(cheng)(cheng)序(xu)狀(zhuang)(zhuang)態(tai)(tai),再(zai)接(jie)著往下執(zhi)行(xing)程(cheng)(cheng)(cheng)(cheng)序(xu)。

我(wo)們之所以(yi)需要(yao)函(han)(han)數,主要(yao)還是因為我(wo)們不(bu)可能將一個(ge)項目中(zhong)的所有(you)程序指令都寫(xie)在main函(han)(han)數中(zhong)去,一旦(dan)項目復雜的話(hua),對程序的修改(gai)和調試將是一場災難(nan)。如下(xia)圖:

所以在(zai)做項目(mu)的(de)時候,我們(men)保證(zheng)項目(mu)高內聚,低耦合(he)。這個時候就(jiu)需要函(han)數(shu)來(lai)(lai)將(jiang)代碼封裝起來(lai)(lai)了。我們(men)常常使用(yong)的(de)函(han)數(shu)都是(shi)封裝起來(lai)(lai)的(de),而使用(yong)函(han)數(shu)的(de)難點就(jiu)在(zai)于函(han)數(shu)的(de)參(can)數(shu)如何填寫(xie)和判斷(duan)函(han)數(shu)的(de)返回值是(shi)什么(me)。

函數的形參與返回值:

函數(shu)的格式: 返(fan)回值(zhi)類型  函數(shu)名字(形參)

函數(shu)填寫:test(arr);(arr是數(shu)組名,也(ye)是數(shu)組的首地(di)址)

(注意:如果此時是test(int p),則因(yin)為(wei)形(xing)參為(wei)int類型(xing)而不是指針類型(xing),所以(yi)不能寫成test(arr);   ; 我(wo)們可(ke)以(yi)填寫成test(arr[1]),arr數組(zu)(zu)中(zhong)的每一個(ge)元素都為(wei)int類型(xing)。這樣可(ke)以(yi),將arr數組(zu)(zu)中(zhong)的第一個(ge)元素傳入(ru)到tset函數中(zhong)去。)

(注意(yi):在(zai)函(han)數(shu)(shu)內定(ding)義的(de)數(shu)(shu)組(zu)(zu)(zu),在(zai)函(han)數(shu)(shu)結(jie)束后(hou),數(shu)(shu)組(zu)(zu)(zu)會(hui)被(bei)釋放(fang),如果(guo)將此數(shu)(shu)組(zu)(zu)(zu)作(zuo)為返(fan)回值返(fan)回給main函(han)數(shu)(shu)的(de)話,由于(yu)數(shu)(shu)組(zu)(zu)(zu)已經被(bei)釋放(fang)了,所以數(shu)(shu)組(zu)(zu)(zu)無法被(bei)找到,會(hui)發(fa)生錯誤。解決(jue)辦法:1.堆(dui) malloc  2.靜態(tai)變量 static)

函數(shu)(shu)填寫:xx(test)(test是另外一個函數(shu)(shu)的名字(zi))

我們知道,函數(shu)的(de)名(ming)字就(jiu)是函數(shu)的(de)入口也就(jiu)是函數(shu)的(de)首地(di)址(zhi)。所以,由此可知函數(shu)指針的(de)本(ben)質就(jiu)是用(yong)來保存函數(shu)的(de)首地(di)址(zhi)(即(ji)函數(shu)名(ming))

 void (*p)(int)實際上就(jiu)是(shi),void (*)(int) p(定(ding)義了一個(ge)指(zhi)(zhi)針(zhen)(zhen),其中(zhong)void (*)(int)為(wei)指(zhi)(zhi)針(zhen)(zhen)類型,p為(wei)指(zhi)(zhi)針(zhen)(zhen)),例(li)如:void (*)(int) p = test;其中(zhong)p就(jiu)表示為(wei)一個(ge)指(zhi)(zhi)向函數(shu)(shu)(shu)test()的函數(shu)(shu)(shu)指(zhi)(zhi)針(zhen)(zhen)。前面我們說(shuo)過,指(zhi)(zhi)針(zhen)(zhen)實際上就(jiu)是(shi)地址(zhi),也(ye)就(jiu)是(shi)說(shuo)void (*)(int) p是(shi)一個(ge)用(yong)來保(bao)存函數(shu)(shu)(shu)text函數(shu)(shu)(shu)首(shou)地址(zhi)的指(zhi)(zhi)針(zhen)(zhen)(即用(yong)來保(bao)存test函數(shu)(shu)(shu)名(ming)字)。但是(shi)void (*)(int) p這種格式,C語言標準不認可,我們需(xu)要寫成void (*p)(int)這種格式。

xx(int x)是一(yi)個函(han)數(shu)(shu),其(qi)返回值(zhi)為(wei)void(*)(int)函(han)數(shu)(shu)指(zhi)(zhi)(zhi)針類(lei)型(xing),即其(qi)返回值(zhi)是一(yi)個指(zhi)(zhi)(zhi)向(xiang)其(qi)他函(han)數(shu)(shu)的(de)指(zhi)(zhi)(zhi)針。注意:xx(int x)是一(yi)個函(han)數(shu)(shu),而(er)不(bu)是一(yi)個用(yong)來保存地址的(de)指(zhi)(zhi)(zhi)針,所(suo)以此時void (*)(int)就為(wei)函(han)數(shu)(shu)的(de)返回值(zhi),而(er)不(bu)是指(zhi)(zhi)(zhi)針的(de)指(zhi)(zhi)(zhi)針類(lei)型(xing)。

好了,到目前(qian)為止(zhi),函數基本的(de)使(shi)用我(wo)們已經知道了。但是(shi)編程(cheng)還是(shi)需要大量的(de)實踐與(yu)理論學(xue)習(xi),多(duo)看看經典的(de)計(ji)算機書籍,會讓我(wo)們對(dui)編程(cheng)的(de)理解(jie)更加深入。

上一篇:不要再盲目學嵌入式了,你走的彎路還不少嗎?

下一篇:Linux和C語言的學習方法你真的知道嗎?

熱點文章推薦(jian)
華(hua)清學員就業(ye)榜單
高薪學員經驗分享
熱點新聞推薦
前(qian)臺專(zhuan)線(xian):010-82525158 企業培訓(xun)洽談專線:010-82525379 院校合作(zuo)洽談專線:010-82525379 Copyright © 2004-2024 北(bei)京華清遠見科(ke)技發(fa)展有限(xian)公司 版權所有 ,,

回到頂部