0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

編程世界C語言入門筆記

GReq_mcu168 ? 來源:筑夢編程 ? 作者:筑夢編程 ? 2021-03-25 14:22 ? 次閱讀

C語言一經(jīng)出現(xiàn)就以其功能豐富、表達能力強、靈活方便、應(yīng)用面廣等特點迅速在全世界普及和推廣。C語言不但執(zhí)行效率高而且可移植性好,可以用來開發(fā)應(yīng)用軟件、驅(qū)動、操作系統(tǒng)等。C語言也是其它眾多高級語言的鼻祖語言,所以說學(xué)習C語言是進入編程世界的必修課。

hello,world

#include《stdio.h》

int main()

{

/*在雙引號中間輸入Hello World*/

printf(“Hello World”);

return 0;

}

注:在最新的C標準中,main函數(shù)前的類型為int而不是voidc語言的具體結(jié)構(gòu)

簡單來說,一個C程序就是由若干頭文件和函數(shù)組成。

8ae5cdba-8cec-11eb-8b86-12bb97331649.png

#include 《stdio.h》就是一條預(yù)處理命令, 它的作用是通知C語言編譯系統(tǒng)在對C程序進行正式編譯之前需做一些預(yù)處理工作。

函數(shù)就是實現(xiàn)代碼邏輯的一個小的單元。

必不可少之主函數(shù)

一個C程序有且只有一個主函數(shù),即main函數(shù)。

8b305cb8-8cec-11eb-8b86-12bb97331649.png

C程序就是執(zhí)行主函數(shù)里的代碼,也可以說這個主函數(shù)就是C語言中的唯一入口。

而main前面的int就是主函數(shù)的類型。

printf()是格式輸出函數(shù),這里就記住它的功能就是在屏幕上輸出指定的信息

return是函數(shù)的返回值,根據(jù)函數(shù)類型的不同,返回的值也是不同的。

是轉(zhuǎn)義字符中的換行符。(注意:C程序一定是從主函數(shù)開始執(zhí)行的)

良好習慣之規(guī)范

一個說明或一個語句占一行,例如:包含頭文件、一個可執(zhí)行語句結(jié)束都需要換行。

函數(shù)體內(nèi)的語句要有明顯縮進,通常以按一下Tab鍵為一個縮進。

括號要成對寫,如果需要刪除的話也要成對刪除。

當一句可執(zhí)行語句結(jié)束的時候末尾需要有分號。

代碼中所有符號均為英文半角符號。

8b6ba0ca-8cec-11eb-8b86-12bb97331649.png

程序解釋——注釋

注釋是寫給程序員看的,不是寫給電腦看的。

C語言注釋方法有兩種:

多行注釋: /* 注釋內(nèi)容 */單行注釋: //注釋一行有名有姓的C(標識符)

C語言規(guī)定,標識符可以是字母(A~Z,a~z)、數(shù)字(0~9)、下劃線_組成的字符串,并且第一個字符必須是字母或下劃線。在使用標識符時還有注意以下幾點:

標識符的長度最好不要超過8位,因為在某些版本的C中規(guī)定標識符前8位有效,當兩個標識符前8位相同時,則被認為是同一個標識符。

標識符是嚴格區(qū)分大小寫的。例如Imooc和imooc 是兩個不同的標識符。

標識符最好選擇有意義的英文單詞組成做到“見名知意”,不要使用中文。

標識符不能是C語言的關(guān)鍵字。想了解更多C語言關(guān)鍵字的知識。

變量及賦值

變量就是可以變化的量,而每個變量都會有一個名字(標識符)。變量占據(jù)內(nèi)存中一定的存儲單元。使用變量之前必須先定義變量,要區(qū)分變量名和變量值是兩個不同的概念。

8b94c8f6-8cec-11eb-8b86-12bb97331649.png

變量定義的一般形式為:數(shù)據(jù)類型 變量名;

多個類型相同的變量:數(shù)據(jù)類型 變量名, 變量名, 變量名。..;

8bf714ac-8cec-11eb-8b86-12bb97331649.png

注意:在定義中不允許連續(xù)賦值,如int a=b=c=5;是不合法的。

變量的賦值分為兩種方式:

先聲明再賦值

聲明的同時賦值

基本數(shù)據(jù)類型

C語言中,數(shù)據(jù)類型可分為:

基本數(shù)據(jù)類型

構(gòu)造數(shù)據(jù)類型

指針類型

空類型四大類

8c27bb84-8cec-11eb-8b86-12bb97331649.png

最常用的整型, 實型與字符型(char,int,float,double):

8c501070-8cec-11eb-8b86-12bb97331649.png

整型數(shù)據(jù)是指不帶小數(shù)的數(shù)字(int,short int,long int, unsigned int, unsigned short int,unsigned long int):

8c7be39e-8cec-11eb-8b86-12bb97331649.png

注:

int short int long int是根據(jù)編譯環(huán)境的不同,所取范圍不同。

而其中short int和long int至少是表中所寫范圍, 但是int在表中是以16位編譯環(huán)境寫的取值范圍。

另外 c語言int的取值范圍在于他占用的字節(jié)數(shù) ,不同的編譯器,規(guī)定是不一樣。

ANSI標準定義int是占2個字節(jié),TC是按ANSI標準的,它的int是占2個字節(jié)的。但是在VC里,一個int是占4個字節(jié)的。

浮點數(shù)據(jù)是指帶小數(shù)的數(shù)字。

生活中有很多信息適合使用浮點型數(shù)據(jù)來表示,比如:人的體重(單位:公斤)、商品價格、圓周率等等。

因為精度的不同又分為3種(float,double,long double):

8cc46542-8cec-11eb-8b86-12bb97331649.png

注:C語言中不存在字符串變量,字符串只能存在字符數(shù)組中,這個后面會講。

格式化輸出語句

格式化輸出語句,也可以說是占位輸出,是將各種類型的數(shù)據(jù)按照格式化后的類型及指定的位置從計算機上顯示。

其格式為:printf(“輸出格式符”,輸出項);

8cda1a7c-8cec-11eb-8b86-12bb97331649.png

當輸出語句中包含普通字符時,可以采用一下格式:

printf(“普通字符輸出格式符”, 輸出項);

8d113692-8cec-11eb-8b86-12bb97331649.png

注意:格式符的個數(shù)要與變量、常量或者表達式的個數(shù)一一對應(yīng)

不可改變的常量

在程序執(zhí)行過程中,值不發(fā)生改變的量稱為常量。

mtianyan: C語言的常量可以分為直接常量和符號常量。

直接常量也稱為字面量,是可以直接拿來使用,無需說明的量,比如:

整型常量:13、0、-13;

實型常量:13.33、-24.4;

字符常量:‘a(chǎn)’、‘M’

字符串常量:”I love imooc!”

8d47b5dc-8cec-11eb-8b86-12bb97331649.png

在C語言中,可以用一個標識符來表示一個常量,稱之為符號常量。符號常量在使用之前必須先定義,其一般形式為:

#define 標識符 常量值

#include 《stdio.h》

#define POCKETMONEY 10 //定義常量及常量值

int main()

{

// POCKETMONEY = 12; //小明私自增加零花錢對嗎?

printf(“小明今天又得到%d元零花錢

”, POCKETMONEY);

return 0;

}

符號常量不可以被改變。

自動類型轉(zhuǎn)換

數(shù)據(jù)類型存在自動轉(zhuǎn)換的情況。

自動轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型運算時,在編譯的時候自動完成。

8da76b08-8cec-11eb-8b86-12bb97331649.png

char類型數(shù)據(jù)轉(zhuǎn)換為int類型數(shù)據(jù)遵循ASCII碼中的對應(yīng)值。

注:

字節(jié)小的可以向字節(jié)大的自動轉(zhuǎn)換,但字節(jié)大的不能向字節(jié)小的自動轉(zhuǎn)換

char可以轉(zhuǎn)換為int,int可以轉(zhuǎn)換為double,char可以轉(zhuǎn)換為double。但是不可以反向。

強制類型轉(zhuǎn)換

強制類型轉(zhuǎn)換是通過定義類型轉(zhuǎn)換運算來實現(xiàn)的。其一般形式為:

(數(shù)據(jù)類型) (表達式)

其作用是把表達式的運算結(jié)果強制轉(zhuǎn)換成類型說明符所表示的類型

在使用強制轉(zhuǎn)換時應(yīng)注意以下問題:

數(shù)據(jù)類型和表達式都必須加括號, 如把(int)(x/2+y)寫成(int)x/2+y則成了把x轉(zhuǎn)換成int型之后再除2再與y相加了。

轉(zhuǎn)換后不會改變原數(shù)據(jù)的類型及變量值,只在本次運算中臨時性轉(zhuǎn)換。

強制轉(zhuǎn)換后的運算結(jié)果不遵循四舍五入原則。

運算符號

C語言中運算符:

※ 算術(shù)運算符

※ 賦值運算符

※ 關(guān)系運算符

※ 邏輯運算符

※ 三目運算符

算術(shù)運算符

c語言基本運算符:

8df2e060-8cec-11eb-8b86-12bb97331649.png

除法運算中注意:

如果相除的兩個數(shù)都是整數(shù)的話,則結(jié)果也為整數(shù),小數(shù)部分省略,如8/3 = 2;

而兩數(shù)中有一個為小數(shù),結(jié)果則為小數(shù),如:9.0/2 = 4.500000。

mtianyan: 取余運算中注意:

該運算只適合用兩個整數(shù)進行取余運算,如:10%3 = 1;

mtianyan: notes: 而10.0%3則是錯誤的;運算后的符號取決于被模數(shù)的符號,如(-10)%3 = -1;而10%(-3) = 1;mtianyan: %%表示這里就是一個%符。

注:C語言中沒有乘方這個運算符,也不能用×, ÷等算術(shù)符號。

自增與自減運算符

自增運算符為++,其功能是使變量的值自增1

自減運算符為--,其功能是使變量值自減1。

它們經(jīng)常使用在循環(huán)中。自增自減運算符有以下幾種形式:

8e33bf5e-8cec-11eb-8b86-12bb97331649.png

賦值運算符

C語言中賦值運算符分為簡單賦值運算符和復(fù)合賦值運算符

簡單賦值運算符=號了,下面講一下復(fù)合賦值運算符:

復(fù)合賦值運算符就是在簡單賦值符=之前加上其它運算符構(gòu)成。

例如+=、-=、*=、/=、%=分析:定義整型變量a并賦值為3,a += 5;這個算式就等價于a = a+5; 將變量a和5相加之后再賦值給a

注意:復(fù)合運算符中運算符和等號之間是不存在空格的。

關(guān)系運算符

C語言中的關(guān)系運算符:

8e5c6ba2-8cec-11eb-8b86-12bb97331649.png

關(guān)系表達式的值是真和假,在C程序用整數(shù)1和0表示。

注意:》=, 《=, ==, !=這種符號之間不能存在空格。

邏輯運算符

C語言中的邏輯運算符:

8e98ce4e-8cec-11eb-8b86-12bb97331649.png

邏輯運算的值也是有兩種分別為真和假,C語言中用整型的1和0來表示。其求值規(guī)則如下:

與運算 &&參與運算的兩個變量都為真時,結(jié)果才為真,否則為假。例如:5》=5 && 7》5 ,運算結(jié)果為真;

或運算 ||參與運算的兩個變量只要有一個為真,結(jié)果就為真。兩個量都為假時,結(jié)果為假。例如:5》=5||5》8,運算結(jié)果為真;

非運算!參與運算的變量為真時,結(jié)果為假;參與運算量為假時,結(jié)果為真。例如:?。?》8),運算結(jié)果為真。

三目運算符

C語言中的三目運算符:?:,其格式為:

表達式1 ? 表達式2 : 表達式3;

執(zhí)行過程是:

先判斷表達式1的值是否為真,如果是真的話執(zhí)行表達式2;如果是假的話執(zhí)行表達式3。

#include 《stdio.h》

int main()

{

//定義小編兜里的錢

double money =12.0 ;

//定義打車回家的費用

double cost =11.5 ;

printf(“小編能不能打車回家呢:”);

//輸出y小編就打車回家了,輸出n小編就不能打車回家

printf(“%c

”,money》=cost?‘y’:‘n’ );

return 0;

}

運算符大比拼之優(yōu)先級比較

各種運算符號的順序:

8ed0c24a-8cec-11eb-8b86-12bb97331649.png

優(yōu)先級別為1的優(yōu)先級最高,優(yōu)先級別為10的優(yōu)先級別最低。

分支結(jié)構(gòu)之簡單if語句

C語言中的分支結(jié)構(gòu)語句中的if條件語句。

簡單if語句的基本結(jié)構(gòu)如下:

if(表達式)

{

執(zhí)行代碼塊;

}

其語義是:如果表達式的值為真,則執(zhí)行其后的語句,否則不執(zhí)行該語句。

注意:if()后面沒有分號,直接寫{}分支結(jié)構(gòu)之簡單if-else語句

簡單的if-else語句的基本結(jié)構(gòu):

8ee6804e-8cec-11eb-8b86-12bb97331649.png

語義是: 如果表達式的值為真,則執(zhí)行代碼塊1,否則執(zhí)行代碼塊2。

注意:

if()后面沒有分號,直接寫{},else后面也沒有分號,直接寫{}

分支結(jié)構(gòu)之多重if-else語句

C語言中多重if-else語句,其結(jié)構(gòu)如下:

8f0961e0-8cec-11eb-8b86-12bb97331649.png

語義是:依次判斷表達式的值,當出現(xiàn)某個值為真時,則執(zhí)行對應(yīng)代碼塊,否則執(zhí)行代碼塊n。

注意:當某一條件為真的時候,則不會向下執(zhí)行該分支結(jié)構(gòu)的其他語句。

分支結(jié)構(gòu)之嵌套if-else語句

C語言中嵌套if-else語句。嵌套if-else語句的意思,就是在if-else語句中,再寫if-else語句。其一般形式為:

8f390d8c-8cec-11eb-8b86-12bb97331649.png

循環(huán)結(jié)構(gòu)之while循環(huán)

反復(fù)不停的執(zhí)行某個動作就是江湖人稱的循環(huán) 。

C語言中有三種循環(huán)結(jié)構(gòu),先看一下C語言while循環(huán)的結(jié)構(gòu)

8f56cf02-8cec-11eb-8b86-12bb97331649.png

其中表達式表示循環(huán)條件,執(zhí)行代碼塊為循環(huán)體。

while語句的語義是:計算表達式的值,當值為真(非0)時, 執(zhí)行循環(huán)體代碼塊。

while語句中的表達式一般是關(guān)系表達或邏輯表達式,當表達式的值為假時不執(zhí)行循環(huán)體,反之則循環(huán)體一直執(zhí)行。

一定要記著在循環(huán)體中改變循環(huán)變量的值,否則會出現(xiàn)死循環(huán)(無休止的執(zhí)行)。

循環(huán)體如果包括有一個以上的語句,則必須用{}括起來,組成復(fù)合語句。

循環(huán)結(jié)構(gòu)之do-while循環(huán)

C語言中的do-while循環(huán),一般形式如下:

8f783bb0-8cec-11eb-8b86-12bb97331649.png

do-while循環(huán)語句的語義是:

它先執(zhí)行循環(huán)中的執(zhí)行代碼塊,然后再判斷while中表達式是否為真,如果為真則繼續(xù)循環(huán);如果為假,則終止循環(huán)。因此,do-while循環(huán)至少要執(zhí)行一次循環(huán)語句。

注意:mtianyan: 使用do-while結(jié)構(gòu)語句時,while括號后必須有分號。

循環(huán)結(jié)構(gòu)之for循環(huán)(一)

c語言中for循環(huán)一般形式:

8fa515ae-8cec-11eb-8b86-12bb97331649.png

它的執(zhí)行過程如下:

執(zhí)行表達式1,對循環(huán)變量做初始化;

判斷表達式2,若其值為真(非0),則執(zhí)行for循環(huán)體中執(zhí)行代碼塊,然后向下執(zhí)行;若其值為假(0),則結(jié)束循環(huán);

執(zhí)行表達式3,(i++)等對于循環(huán)變量進行操作的語句;

執(zhí)行for循環(huán)中執(zhí)行代碼塊后執(zhí)行第二步;第一步初始化只會執(zhí)行一次。

循環(huán)結(jié)束,程序繼續(xù)向下執(zhí)行。

注意:for循環(huán)中的兩個分號一定要寫

循環(huán)結(jié)構(gòu)之for循環(huán)(二)

在for循環(huán)中:

表達式1是一個或多個賦值語句,它用來控制變量的初始值;

表達式2是一個關(guān)系表達式,它決定什么時候退出循環(huán);

表達式3是循環(huán)變量的步進值,定義控制循環(huán)變量每循環(huán)一次后按什么方式變化。

這三部分之間用分號 ; 分開。

使用for語句應(yīng)該注意:

for循環(huán)中的“表達式1、2、3”均可不寫為空,但兩個分號(;;)不能缺省。

省略“表達式1(循環(huán)變量賦初值)”,表示不對循環(huán)變量賦初始值。

省略“表達式2(循環(huán)條件)”,不做其它處理,循環(huán)一直執(zhí)行(死循環(huán))。

省略“表達式3(循環(huán)變量增減量)”,不做其他處理,循環(huán)一直執(zhí)行(死循環(huán))。

表達式1可以是設(shè)置循環(huán)變量的初值的賦值表達式,也可以是其他表達式。

表達式1和表達式3可以是一個簡單表達式也可以是多個表達式以逗號分割。

8fbfd8f8-8cec-11eb-8b86-12bb97331649.png

表達式2一般是關(guān)系表達式或邏輯表達式,但也可是數(shù)值表達式或字符表達式,只要其值非零,就執(zhí)行循環(huán)體。

各表達式中的變量一定要在for循環(huán)之前定義。

怎么獲得一個數(shù)的百位,十位和個位

百位數(shù):num/100 可以獲得,因為 int 是整數(shù)型,小數(shù)部分會省略。比如 765/100 的結(jié)果是7十位數(shù):num%100/10 。比如765%100先得到65,65/10得到6個位數(shù):num%10。765%10得到5循環(huán)結(jié)構(gòu)之三種循環(huán)比較

while, do-while和for三種循環(huán)在具體的使用場合上是有區(qū)別的,如下:

在知道循環(huán)次數(shù)的情況下更適合使用for循環(huán);

在不知道循環(huán)次數(shù)的情況下適合使用while或者do-while循環(huán):

如果有可能一次都不循環(huán)應(yīng)考慮使用while循環(huán)

如果至少循環(huán)一次應(yīng)考慮使用do-while循環(huán)。

但是從本質(zhì)上講,while,do-while和for循環(huán)之間是可以相互轉(zhuǎn)換的。

循環(huán)結(jié)構(gòu)之多重循環(huán)

多重循環(huán)就是在循環(huán)結(jié)構(gòu)的循環(huán)體中又出現(xiàn)循環(huán)結(jié)構(gòu)。

在實際開發(fā)中一般最多用到三層重循環(huán)。

因為循環(huán)層數(shù)越多,運行時間越長,程序越復(fù)雜,所以一般用2-3層多重循環(huán)就可以了。另外不同循環(huán)之間也是可以嵌套的。

多重循環(huán)在執(zhí)行的過程中,外層循環(huán)為父循環(huán),內(nèi)層循環(huán)為子循環(huán),

父循環(huán)一次,子循環(huán)需要全部執(zhí)行完,直到跳出循環(huán)。父循環(huán)再進入下一次,子循環(huán)繼續(xù)執(zhí)行。..

8ff1cc82-8cec-11eb-8b86-12bb97331649.png

mtianyan: 打印三角形星星堆

#include 《stdio.h》

int main()

{

int i, j, k;

for(i=1; i《5; i++)

{

/* 觀察每行的空格數(shù)量,補全循環(huán)條件 */

for(j=i; j《5; j++)

{

printf(“ ”); //輸出空格

}

/* 觀察每行*號的數(shù)量,補全循環(huán)條件 */

for( k=0;k《2*i-1;k++)

{

printf(“*”); //每行輸出的*號

}

printf(“

”); //每次循環(huán)換行

}

return 0;

}

使用for循環(huán)打印9×9乘法表

#include 《stdio.h》

int main()

{

// 定義相乘數(shù)字i,j以及結(jié)果result

int i, j, result;

for(i=9;i》=1;i--)

{

for(j=1;j《=i;j++)

{

printf(“%d*%d=%d ”,i,j,result=i*j);

}

printf(“

”);

}

return 0;

}

結(jié)束語句之break語句

那么循環(huán)5次的時候,需要中斷不繼續(xù)訓(xùn)練。在C語言中,可以使用break語句進行該操作。

使用break語句時注意以下幾點:

在沒有循環(huán)結(jié)構(gòu)的情況下,break不能用在單獨的if-else語句中。

在多層循環(huán)中,一個break語句只跳出當前循環(huán)。

結(jié)束語句之continue語句

那么循環(huán)5次的時候,需要中斷后繼續(xù)訓(xùn)練。在C語言中,可以使用continue語句進行該操作

continue語句的作用是結(jié)束本次循環(huán)開始執(zhí)行下一次循環(huán)。

break語句與continue語句的區(qū)別是:

break是跳出當前整個循環(huán),continue是結(jié)束本次循環(huán)開始下一次循環(huán)。

分支結(jié)構(gòu)之switch語句

switch語句結(jié)構(gòu)如下:

904655f4-8cec-11eb-8b86-12bb97331649.png

mtianyan: switch語句時還應(yīng)注意以下幾點:

在case后的各常量表達式的值不能相同,否則會出現(xiàn)錯誤。

在case子句后如果沒有break;會一直往后執(zhí)行一直到遇到break;才會跳出switch語句。

switch后面的表達式語句只能是整型或者字符類型。

在case后,允許有多個語句,可以不用{}括起來。

各case和default子句的先后順序可以變動,而不會影響程序執(zhí)行結(jié)果。

default子句可以省略不用。

mtianyan: switch與if語句的應(yīng)用(計算是該年的第幾天)

#include 《stdio.h》

int main()

{

/* 定義需要計算的日期 */

int date = 0;

int year = 2008;

int month = 8;

int day = 8;

switch(month)

{

case 12:date+=30;

case 11:date+=31;

case 10:date+=30;

case 9:date+=31;

case 8:date+=31;

case 7:date+=30;

case 6:date+=31;

case 5:date+=30;

case 4:date+=31;

case 3:

if((year%4==0&&year%100!=0)||year%400==0)

{

date+=29;

}

else

{

date+=28;

}

case 2:

date+=31;

case 1:

date+=day;

printf(“%d年%d月%d日是該年的第%d天”,year,month,day,date);

break;

default:

printf(“error”);

break;

}

return 0;

}

正確: continue只能用在循環(huán)體內(nèi)

臭名遠揚之goto語句

C語言中也有這樣的語句,就是goto語句,goto語句是一種無條件分支語句。

goto 語句的使用格式為:

goto 語句標號;

90643614-8cec-11eb-8b86-12bb97331649.png

自創(chuàng)函數(shù)

C語言提供了大量的庫函數(shù): 比如stdio.h提供輸出函數(shù)

自定義函數(shù)的一般形式:

909c8c80-8cec-11eb-8b86-12bb97331649.png

注意:

[] 包含的內(nèi)容可以省略,數(shù)據(jù)類型說明省略,默認是 int 類型函數(shù); 參數(shù)省略表示該函數(shù)是無參函數(shù),參數(shù)不省略表示該函數(shù)是有參函數(shù);

函數(shù)名稱遵循標識符命名規(guī)范;

mtianyan: 自定義函數(shù)盡量放在 main 函數(shù)之前,如果要放在main函數(shù)后面的話, 需要在main函數(shù)之前先聲明自定義函數(shù),聲明格式為:

[數(shù)據(jù)類型說明] 函數(shù)名稱([參數(shù)]);

函數(shù)調(diào)用

我們需要用到自定義的函數(shù)的時候,就得調(diào)用它,那么在調(diào)用的時候就稱之為函數(shù)調(diào)用。

在C語言中,函數(shù)調(diào)用的一般形式為:

函數(shù)名([參數(shù)]);

注意:

對無參函數(shù)調(diào)用的時候可以將[]包含的省略。

[]中可以是常數(shù),變量或其它構(gòu)造類型數(shù)據(jù)及表達式,多個參數(shù)之間用逗號分隔。

有參與無參

在函數(shù)中不需要函數(shù)參數(shù)的稱之為無參函數(shù),在函數(shù)中需要函數(shù)參數(shù)的稱之為有參函數(shù)。

有參和無參函數(shù)的一般形式如下:

90b81310-8cec-11eb-8b86-12bb97331649.png

有參函數(shù)和無參函數(shù)的唯一區(qū)別在于:函數(shù) () 中多了一個參數(shù)列表。

有參函數(shù)更為靈活,輸出的內(nèi)容可以隨著n的改變而隨意變動,只要在main函數(shù)中傳遞一個參數(shù)就可以了

而在無參函數(shù)中輸出的相對就比較固定,當需要改動的時候還需要到自定義的方法內(nèi)改變循環(huán)變量的值。

mtianyan: 形參與實參

函數(shù)的參數(shù)分為形參和實參兩種。

形參是在定義函數(shù)名和函數(shù)體的時候使用的參數(shù),目的是用來接收調(diào)用該函數(shù)時傳入的參數(shù)。

就類似小明,說了的話而不實際行動;

實參是在調(diào)用時傳遞該函數(shù)的參數(shù)。

就如小剛能實際行動起來。

函數(shù)的形參和實參具有以下特點:

形參只有在被調(diào)用時才分配內(nèi)存單元,在調(diào)用結(jié)束時,即刻釋放所分配的內(nèi)存單元。因此,形參只有在函數(shù)內(nèi)部有效。

函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量。

實參可以是常量、變量、表達式、函數(shù)等。

無論實參是何種類型的量,在進行函數(shù)調(diào)用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應(yīng)預(yù)先用賦值等辦法使實參獲得確定值。

在參數(shù)傳遞時,實參和形參在數(shù)量上,類型上,順序上應(yīng)嚴格一致,否則會發(fā)生類型不匹配的錯誤。

90f76f60-8cec-11eb-8b86-12bb97331649.png

函數(shù)的返回值

函數(shù)的返回值是指函數(shù)被調(diào)用之后,執(zhí)行函數(shù)體中的程序段所取得的并返回給主調(diào)函數(shù)的值。

函數(shù)的返回值要注意以下幾點:

函數(shù)的值只能通過return語句返回主調(diào)函數(shù)。

return語句的一般形式為:

return 表達式 或者為:return (表達式);

函數(shù)值的類型和函數(shù)定義中函數(shù)的類型應(yīng)保持一致。

notes: 如果兩者不一致,則以函數(shù)返回類型為準,自動進行類型轉(zhuǎn)換。

沒有返回值的函數(shù),返回類型為 void。

注意:

void 函數(shù)中可以有執(zhí)行代碼塊,但是不能有返回值。

mtianyan: void函數(shù)中如果有return語句,該語句只能起到結(jié)束函數(shù)運行的功能。其格式為: return;遞歸函數(shù)(一)

遞歸就是一個函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身。

執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身,每調(diào)用一次就進入新的一層。

注意遞歸函數(shù)必須有結(jié)束條件

遞歸函數(shù)(二)

5的階乘這個例子進行一下剖析,看一看他的運算過程:

913f0e42-8cec-11eb-8b86-12bb97331649.jpg

程序在計算5的階乘的時候,先執(zhí)行遞推,當n=1或者n=0的時候返回1,再回推將計算并返回。由此可以看出遞歸函數(shù)必須有結(jié)束條件。

遞歸函數(shù)特點:

每一級函數(shù)調(diào)用時都有自己的變量,但是函數(shù)代碼并不會得到復(fù)制,如計算5的階乘時每遞推一次變量都不同;

每次調(diào)用都會有一次返回,如計算5的階乘時每遞推一次都返回進行下一次;

遞歸函數(shù)中,位于遞歸調(diào)用前的語句和各級被調(diào)用函數(shù)具有相同的執(zhí)行順序;

遞歸函數(shù)中,位于遞歸調(diào)用后的語句的執(zhí)行順序和各個被調(diào)用函數(shù)的順序相反;

遞歸函數(shù)中必須有終止語句。

一句話總結(jié)遞歸:自我調(diào)用且有完成狀態(tài)

任務(wù)

猴子第一天摘下N個桃子,當時就吃了一半,還不過癮,就又多吃了一個。第二天又將剩下的桃子吃掉一半,又多吃了一個。以后每天都吃前一天剩下的一半零一個。到第10天在想吃的時候就剩一個桃子了,問第一天共摘下來多少個桃子?并反向打印每天所剩桃子數(shù)。

#include 《stdio.h》

int getPeachNumber(int n)

{

int num;

if(n==10)

{

return 1;

}

else

{

num = (getPeachNumber(n+1)+1)*2;

printf(“第%d天所剩桃子%d個

”, n, num);

}

return num;

}

int main()

{

int num = getPeachNumber(1);

printf(“猴子第一天摘了:%d個桃子。

”, num);

return 0;

}

遞歸demo。

有5個人坐在一起,問第5個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第3個人大2歲。問第3個人,又說比第2人大兩歲。問第2個人,說比第1個人大兩歲。最后 問第1個人,他說是10歲。請問第5個人多大?

程序分析:

利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第5個人歲數(shù),需知道第4人的歲數(shù),依次類推,推到第1人(10歲),再往回推。

#include 《stdio.h》

int dfs(int n) {

return n == 1 ? 10 : dfs(n - 1) + 2;

}

int main()

{

printf(“第5個人的年齡是%d歲”, dfs(5));

return 0;

}

局部與全局

C語言中的變量,按作用域范圍可分為兩種,即局部變量和全局變量。

局部變量也稱為內(nèi)部變量。局部變量是在函數(shù)內(nèi)作定義說明的。其作用域僅限于函數(shù)內(nèi), 離開該函數(shù)后再使用這種變量是非法的。在復(fù)合語句中也可定義變量,其作用域只在復(fù)合語句范圍內(nèi)。

全局變量也稱為外部變量,它是在函數(shù)外部定義的變量。它不屬于哪一個函數(shù),它屬于一個源程序文件。其作用域是整個源程序。

變量存儲類別

mtianyan: C語言根據(jù)變量的生存周期來劃分,可以分為靜態(tài)存儲方式和動態(tài)存儲方式。

靜態(tài)存儲方式:是指在程序運行期間分配固定的存儲空間的方式。靜態(tài)存儲區(qū)中存放了在整個程序執(zhí)行過程中都存在的變量,如全局變量。

動態(tài)存儲方式:是指在程序運行期間根據(jù)需要進行動態(tài)的分配存儲空間的方式。動態(tài)存儲區(qū)中存放的變量是根據(jù)程序運行的需要而建立和釋放的,通常包括:函數(shù)形式參數(shù);自動變量;函數(shù)調(diào)用時的現(xiàn)場保護和返回地址等。

C語言中存儲類別又分為四類:

自動(auto)、

靜態(tài)(static)、

寄存器的(register)

外部的(extern)。

1、用關(guān)鍵字auto定義的變量為自動變量,auto可以省略,auto不寫則隱含定為“自動存儲類別”,屬于動態(tài)存儲方式。如:

91841a28-8cec-11eb-8b86-12bb97331649.png

2、用static修飾的為靜態(tài)變量,如果定義在函數(shù)內(nèi)部的,稱之為靜態(tài)局部變量;如果定義在函數(shù)外部,稱之為靜態(tài)外部變量。如下為靜態(tài)局部變量:

91c54610-8cec-11eb-8b86-12bb97331649.png

注意:靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個運行期間都不釋放;靜態(tài)局部變量在編譯時賦初值,即只賦初值一次;如果在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯時自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)。

3、為了提高效率,C語言允許將局部變量得值放在CPU中的寄存器中,這種變量叫“寄存器變量”,用關(guān)鍵字register作聲明。例如:

922a7972-8cec-11eb-8b86-12bb97331649.png

mtianyan: 注意:只有局部自動變量和形式參數(shù)可以作為寄存器變量;一個計算機系統(tǒng)中的寄存器數(shù)目有限,不能定義任意多個寄存器變量;局部靜態(tài)變量不能定義為寄存器變量。

4、用extern聲明的的變量是外部變量,外部變量的意義是某函數(shù)可以調(diào)用在該函數(shù)之后定義的變量。如:

924d85b6-8cec-11eb-8b86-12bb97331649.png

內(nèi)部函數(shù)與外部函數(shù)

在C語言中不能被其他源文件調(diào)用的函數(shù)稱謂內(nèi)部函數(shù) ,內(nèi)部函數(shù)由static關(guān)鍵字來定義,因此又被稱謂靜態(tài)函數(shù),形式為:

static [數(shù)據(jù)類型] 函數(shù)名([參數(shù)])

這里的static是對函數(shù)的作用范圍的一個限定,限定該函數(shù)只能在其所處的源文件中使用,因此在不同文件中出現(xiàn)相同的函數(shù)名稱的內(nèi)部函數(shù)是沒有問題的。

在C語言中能被其他源文件調(diào)用的函數(shù)稱謂外部函數(shù) ,外部函數(shù)由extern關(guān)鍵字來定義,形式為:

extern [數(shù)據(jù)類型] 函數(shù)名([參數(shù)])

C語言規(guī)定,在沒有指定函數(shù)的作用范圍時,系統(tǒng)會默認認為是外部函數(shù),因此當需要定義外部函數(shù)時extern也可以省略。

靜態(tài)變量只賦值一次

外部函數(shù)練習

hello.c

#include 《stdio.h》

#include “test.c” //引用test.c文件

extern void printLine() //這里定義的方法對嗎?

{

printf(“**************

”);

}

int main()

{

say();

return 0;

}

test.c

#include 《stdio.h》

void printLine();

static void say(){

printLine();

printf(“I love imooc

”);

printf(“good good study!

”);

printf(“day day up!

”);

printLine();

}

對于hello.c來說,直接引入了test.c文件。那么就可以調(diào)用testc中的static方法say()

而對于test.c并沒有引入,可以通過聲明來調(diào)用另一個源文件中暴露出來的方法。

綜合練習

北京市出租車打車計費規(guī)則如下:

每公里單價計費2.3元

起步價13元(包含3公里)

晚上23點(含)至次日凌晨5點(不含)打車,每公里單價計費加收20%。

每次乘車加收1元錢的燃油附加稅。

小明每天上下班都要打車,公司和家的距離為12公里,上午上班時間為9點,下午下班時間為6點。

請編寫一個小程序計算小明每天打車的總費用。

#include 《stdio.h》

float taxifee(int clock,int miles)

{

float money;

if(miles《=3)

{

money=14;

printf(“費用為14

”);

}

else

{

if(clock》=23 || clock《5)

{

money=13+1+2.3*(miles-3)*1.2;

printf(“夜間車費為:%f

”,money);

}

else

{

money=13+1+2.3*(miles-3);

printf(“日間車費為:%f

”,money);

}

}

return money;

}

int main()

{

printf(“打的總費用:%.1f

”,taxifee(9,12)+taxifee(18,12));

return 0;

}

數(shù)組初體驗

程序中也需要容器,只不過該容器有點特殊,它在程序中是一塊連續(xù)的,大小固定并且里面的數(shù)據(jù)類型一致的內(nèi)存空間,它還有個好聽的名字叫數(shù)組。可以將數(shù)組理解為大小固定,所放物品為同類的一個購物袋,在該購

物袋中的物品是按一定順序放置的。

我們來看一下如何聲明一個數(shù)組:

數(shù)據(jù)類型 數(shù)組名稱[長度];

數(shù)組只聲明也不行啊,看一下數(shù)組是如何初始化的。說到初始化,C語言中的數(shù)組初始化是有三種形式的,分別是:

數(shù)據(jù)類型 數(shù)組名稱[長度n] = {元素1,元素2…元素n};

數(shù)據(jù)類型 數(shù)組名稱[] = {元素1,元素2…元素n};

數(shù)據(jù)類型 數(shù)組名稱[長度n]; 數(shù)組名稱[0] = 元素1; 數(shù)組名稱[1] = 元素2; 數(shù)組名稱[n-1] = 元素n;

我們將數(shù)據(jù)放到數(shù)組中之后又如何獲取數(shù)組中的元素呢?

獲取數(shù)組元素時:數(shù)組名稱[元素所對應(yīng)下標];

如:初始化一個數(shù)組 int arr[3] = {1,2,3}; 那么arr[0]就是元素1。

注意:

數(shù)組的下標均以0開始;

數(shù)組在初始化的時候,數(shù)組內(nèi)元素的個數(shù)不能大于聲明的數(shù)組長度;

mtianyan: 如果采用第一種初始化方式,元素個數(shù)小于數(shù)組的長度時,多余的數(shù)組元素初始化為0;

在聲明數(shù)組后沒有進行初始化的時候,靜態(tài)(static)和外部(extern)類型的數(shù)組元素初始化元素為0,自動(auto)類型的數(shù)組的元素初始化值不確定。

數(shù)組的遍歷

數(shù)組就可以采用循環(huán)的方式將每個元素遍歷出來,而不用人為的每次獲取指定某個位置上的元素,例如我們用for循環(huán)遍歷一個數(shù)組:

92894844-8cec-11eb-8b86-12bb97331649.png

注意以下幾點:

最好避免出現(xiàn)數(shù)組越界訪問,循環(huán)變量最好不要超出數(shù)組的長度。

C語言的數(shù)組長度一經(jīng)聲明,長度就是固定,無法改變,并且C語言并不提供計算數(shù)組長度的方法。

由于C語言是沒有檢查數(shù)組長度改變或者數(shù)組越界的這個機制,可能會在編輯器中編譯并通過,但是結(jié)果就不能肯定了,因此還是不要越界或者改變數(shù)組的長度

c語言獲取數(shù)組長度

int length = sizeof(arr)/sizeof(arr[0]);

數(shù)組作為函數(shù)參數(shù)

數(shù)組可以由整個數(shù)組當作函數(shù)的參數(shù),也可以由數(shù)組中的某個元素當作函數(shù)的參數(shù):

整個數(shù)組當作函數(shù)參數(shù),即把數(shù)組名稱傳入函數(shù)中,例如:

92c6ab62-8cec-11eb-8b86-12bb97331649.png

數(shù)組中的元素當作函數(shù)參數(shù),即把數(shù)組中的參數(shù)傳入函數(shù)中,例如:

93035364-8cec-11eb-8b86-12bb97331649.png

數(shù)組作為函數(shù)參數(shù)時注意以下事項:

數(shù)組名作為函數(shù)實參傳遞時,函數(shù)定義處作為接收參數(shù)的數(shù)組類型形參既可以指定長度也可以不指定長度。

數(shù)組元素作為函數(shù)實參傳遞時,數(shù)組元素類型必須與形參數(shù)據(jù)類型一致。

mtianyan: 數(shù)組的應(yīng)用(一)[冒泡排序]

以升序排序為例冒泡排序的思想:相鄰元素兩兩比較,將較大的數(shù)字放在后面,直到將所有數(shù)字全部排序。就像小學(xué)排隊時按大小個排一樣,將一個同學(xué)拉出來和后面的比比,如果高就放后面,一直把隊伍排好。

#include 《stdio.h》

int main()

{

double arr[]={1.78, 1.77, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80};

int i,j;

printf(“

************排隊前*************

”);

for(i=0;i《10;i++)

{

if(i != 9)

printf(“%1.2f, ”, arr[i]); //%1.2f表示小數(shù)點前一位,小數(shù)點后精確到兩位

else

printf(“%1.2f”, arr[i]); //%1.2f表示小數(shù)點前一位,小數(shù)點后精確到兩位

}

for(i=8; i》=0; i--)

{

for(j=0;j《=i;j++)

{

if( arr[j]》arr[j+1]) //當前面的數(shù)比后面的數(shù)大時

{

double temp; //定義臨時變量temp

temp=arr[j];//將前面的數(shù)賦值給temp

arr[j]=arr[j+1]; //前后之數(shù)顛倒位置

arr[j+1]=temp;//將較大的數(shù)放在后面

}

}

}

printf(“

************排隊后*************

”);

for(i=0;i《10;i++)

{

if(i != 9)

printf(“%1.2f, ”, arr[i]); //%1.2f表示小數(shù)點前一位,小數(shù)點后精確到兩位

else

printf(“%1.2f”, arr[i]); //%1.2f表示小數(shù)點前一位,小數(shù)點后精確到兩位

}

return 0;

}

數(shù)組的應(yīng)用(二)[數(shù)組查找功能]

當我們購物之后,拎著購物袋回到家,會一一檢查購物袋中的物品看是否缺少或者都是想購之物。

那么應(yīng)用到程序中,可以使用數(shù)組查找功能,看看是否存在該數(shù)據(jù),如果存在并返回該元素的下標。

#include 《stdio.h》

int getIndex(int arr[5],int value)

{

int i;

int index;

for(i=0;i《5;i++)

{

/* 請完善數(shù)組查詢功能 */

if(arr[i]==value)

{

index=i;

break;

}

index=-1;

}

return index;

}

int main()

{

int arr[5]={3,12,9,8,6};

int value = 8;

int index = getIndex(arr,value); //這里應(yīng)該傳什么參數(shù)呢?

if(index!=-1)

{

printf(“%d在數(shù)組中存在,下標為:%d

”,value,index);

}

else

{

printf(“%d在數(shù)組中不存在。

”,value);

}

return 0;

}

字符串與數(shù)組

C語言中,是沒有辦法直接定義字符串數(shù)據(jù)類型的,但是我們可以使用數(shù)組來定義我們所要的字符串。一般有以下兩種格式:

char 字符串名稱[長度] = “字符串值”;

char 字符串名稱[長度] = {‘字符1’,‘字符2’,。..,‘字符n’,‘’};

注意:

[]中的長度是可以省略不寫的;

采用第2種方式的時候最后一個元素必須是‘’,‘’表示字符串的結(jié)束標志;

采用第2種方式的時候在數(shù)組中不能寫中文。

在輸出字符串的時候要使用:printf(“%s”,字符數(shù)組名字);或者puts(字符數(shù)組名字);。

mtianyan:字符串函數(shù)

常用的字符串函數(shù)如下(strlen,strcmp,strcpy,strcat,atoi):

935c12f6-8cec-11eb-8b86-12bb97331649.png

使用字符串函數(shù)注意以下事項:

strlen()獲取字符串的長度,在字符串長度中是不包括‘’而且漢字和字母的長度是不一樣的。比如:

939ac0dc-8cec-11eb-8b86-12bb97331649.png

strcmp()在比較的時候會把字符串先轉(zhuǎn)換成ASCII碼再進行比較,返回的結(jié)果為0表示s1和s2的ASCII碼相等,返回結(jié)果為1表示s1比s2的ASCII碼大,返回結(jié)果為-1表示s1比s2的ASCII碼小,例如:

93d6d4b4-8cec-11eb-8b86-12bb97331649.png

strcpy()拷貝之后會覆蓋原來字符串且不能對字符串常量進行拷貝,比如:

944463ee-8cec-11eb-8b86-12bb97331649.png

strcat在使用時s1與s2指的內(nèi)存空間不能重疊,且s1要有足夠的空間來容納要復(fù)制的字符串,如:

9481070e-8cec-11eb-8b86-12bb97331649.png

多維數(shù)組

多維數(shù)組的定義格式是:

數(shù)據(jù)類型 數(shù)組名稱[常量表達式1][常量表達式2]。..[常量表達式n];

94d85f04-8cec-11eb-8b86-12bb97331649.png

定義了一個名稱為num,數(shù)據(jù)類型為int的二維數(shù)組。其中第一個[3]表示第一維下標的長度,就像購物時分類存放的購物;第二個[3]表示第二維下標的長度,就像每個購物袋中的元素。

950131a4-8cec-11eb-8b86-12bb97331649.png

多維數(shù)組的初始化與一維數(shù)組的初始化類似也是分兩種:

數(shù)據(jù)類型 數(shù)組名稱[常量表達式1][常量表達式2]。..[常量表達式n] = {{值1,。.,值n},{值1,。.,值n},。..,{值1,。.,值n}};

數(shù)據(jù)類型 數(shù)組名稱[常量表達式1][常量表達式2]。..[常量表達式n]; 數(shù)組名稱[下標1][下標2]。..[下標n] = 值;

多維數(shù)組初始化要注意以下事項:

采用第一種始化時數(shù)組聲明必須指定列的維數(shù)。mtianyan: 因為系統(tǒng)會根據(jù)數(shù)組中元素的總個數(shù)來分配空間,當知道元素總個數(shù)以及列的維數(shù)后,會直接計算出行的維數(shù);

采用第二種初始化時數(shù)組聲明必須同時指定行和列的維數(shù)。

二維數(shù)組定義的時候,可以不指定行的數(shù)量,但是必須指定列的數(shù)量

二維數(shù)組定義的時候,可以不指定行的數(shù)量,但是必須指定列的數(shù)量。

多維數(shù)組的遍歷

多維數(shù)組也是存在遍歷的,和一維數(shù)組遍歷一樣,也是需要用到循環(huán)。不一樣的就是多維數(shù)組需要采用嵌套循環(huán)。

注意:多維數(shù)組的每一維下標均不能越界。

綜合練習:

#include 《stdio.h》

#define N 10

//打印分數(shù)

void printScore(int score[])

{

int i;

printf(“

”);

for(i=0;i《N;i++)

{

printf(“%d ”,score[i]);

}

printf(“

”);

}

//計算考試總分

int getTotalScore(int score[])

{

int sum = 0;

int i;

for(i=0;i《N;i++)

{

sum+=score[i];

}

return sum;

}

//計算平均分

int getAvgScore(int score[])

{

return getTotalScore(score)/N;

}

//計算最高分

int getMax(int score[])

{

int max = -1;

int i;

for(i=0;i《N;i++)

{

if(score[i]》max)

{

max = score[i];

}

}

return max;

}

//計算最低分

int getMin(int score[])

{

int min =100;

int i;

for(i=0;i《N;i++)

{

if(score[i]《 min)

{

min = score[i];

}

}

return min;

}

//分數(shù)降序排序

void sort(int score[])

{

int i,j;

for(i=N-2;i》=0;i--)

{

for(j=0;j《=i;j++)

{

if(score[j]《score[j+1])

{

int temp;

temp = score[j];

score[j] = score[j+1];

score[j+1]=temp;

}

}

}

printScore(score);

}

int main()

{

int score[N]={67,98,75,63,82,79,81,91,66,84};

int sum,avg,max,min;

sum = getTotalScore(score);

avg = getAvgScore(score);

max = getMax(score);

min = getMin(score);

printf(“總分是:%d

”,sum);

printf(“平均分是:%d

”,avg);

printf(“最高分是:%d

”,max);

printf(“最低分是:%d

”,min);

printf(“----------成績排名---------

”);

sort(score);

return 0;

}

原文標題:C語言最全入門筆記

文章出處:【微信公眾號:玩轉(zhuǎn)單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7591

    瀏覽量

    135780
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3559

    瀏覽量

    93532

原文標題:C語言最全入門筆記

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    C語言中的socket編程基礎(chǔ)

    Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過使用socket,
    的頭像 發(fā)表于 11-01 16:51 ?196次閱讀

    MCU編程語言和開發(fā)環(huán)境介紹

    MCU編程語言 MCU編程語言是用于編寫MCU程序的高級編程語言,它們使得開發(fā)者能夠更高效地開
    的頭像 發(fā)表于 11-01 11:51 ?283次閱讀

    C語言與其他編程語言的比較

    C語言作為一種歷史悠久的編程語言,自其誕生以來,一直在軟件開發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強的特點,成為了系統(tǒng)級編程的首選
    的頭像 發(fā)表于 10-29 17:30 ?130次閱讀

    FPGA編程語言入門教程

    FPGA(現(xiàn)場可編程邏輯門陣列)的編程涉及特定的硬件描述語言(HDL),其中Verilog和VHDL是最常用的兩種。以下是一個FPGA編程語言
    的頭像 發(fā)表于 10-25 09:21 ?117次閱讀

    PLC編程語言C語言的區(qū)別

    在工業(yè)自動化和計算機編程領(lǐng)域中,PLC(可編程邏輯控制器)編程語言C語言各自扮演著重要的角色。
    的頭像 發(fā)表于 06-14 17:11 ?2294次閱讀

    plc編程語言c語言的聯(lián)系 c語言和PLC有什么區(qū)別

    PLC編程語言C語言的聯(lián)系 PLC(可編程邏輯控制器)是一種針對自動化控制系統(tǒng)的特殊計算機。PLC編程
    的頭像 發(fā)表于 02-05 14:21 ?3718次閱讀

    c語言,c++,java,python區(qū)別

    操作系統(tǒng)、嵌入式系統(tǒng)等對性能要求較高的場景。C語言的語法相對簡單,學(xué)習曲線較平緩,也是學(xué)習其他高級語言入門語言
    的頭像 發(fā)表于 02-05 14:11 ?1957次閱讀

    vb語言c++語言的區(qū)別

    VB語言C++語言是兩種不同的編程語言,雖然它們都屬于高級編程
    的頭像 發(fā)表于 02-01 10:20 ?1911次閱讀

    什么是C語言?單片機有什么特點?為什么要用C語言編程?

    隨著技術(shù)的發(fā)展,電子產(chǎn)品越來越多,方便了我們的日常生活,大多數(shù)電子產(chǎn)品上都有單片機,而單片機是通過執(zhí)行軟件邏輯來實現(xiàn)功能的。而單片機編程最合適的編程語言是匯編語言,但是最常用、最普及的
    的頭像 發(fā)表于 11-21 10:06 ?1504次閱讀
    什么是<b class='flag-5'>C</b><b class='flag-5'>語言</b>?單片機有什么特點?為什么要用<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>編程</b>?

    C語言編程必備知識合集

    電子發(fā)燒友網(wǎng)站提供《C語言編程必備知識合集.zip》資料免費下載
    發(fā)表于 11-21 09:34 ?0次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>編程</b>必備知識合集

    C語言經(jīng)典編程900例

    電子發(fā)燒友網(wǎng)站提供《C語言經(jīng)典編程900例.rar》資料免費下載
    發(fā)表于 11-20 11:40 ?6次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>經(jīng)典<b class='flag-5'>編程</b>900例

    C語言編程入門教程

    電子發(fā)燒友網(wǎng)站提供《C語言編程入門教程.rar》資料免費下載
    發(fā)表于 11-20 10:23 ?8次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>編程</b><b class='flag-5'>入門</b>教程

    C語言的基本概念和編程技術(shù)

    電子發(fā)燒友網(wǎng)站提供《C語言的基本概念和編程技術(shù).pdf》資料免費下載
    發(fā)表于 11-20 10:18 ?0次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>的基本概念和<b class='flag-5'>編程</b>技術(shù)

    51單片機C語言編程入門學(xué)習資料

    電子發(fā)燒友網(wǎng)站提供《51單片機C語言編程入門學(xué)習資料.pdf》資料免費下載
    發(fā)表于 11-18 11:04 ?14次下載
    51單片機<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>編程</b><b class='flag-5'>入門</b>學(xué)習資料

    C語言進階之嵌入式系統(tǒng)高級C語言編程

    電子發(fā)燒友網(wǎng)站提供《C語言進階之嵌入式系統(tǒng)高級C語言編程.rar》資料免費下載
    發(fā)表于 11-18 10:32 ?1次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>進階之嵌入式系統(tǒng)高級<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>編程</b>