www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 玩轉(zhuǎn)嵌入式
[導讀]c語言入門C語言一經(jīng)出現(xiàn)就以其功能豐富、表達能力強、靈活方便、應用面廣等特點迅速在全世界普及和推廣。C語言不但執(zhí)行效率高而且可移植性好,可以用來開發(fā)應用軟件、驅(qū)動、操作系統(tǒng)等。C語言也是其它眾多高級語言的鼻祖語言,所以說學習C語言是進入編程世界的必修課。hello,world#i...

c語言入門

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

hello,world

#include?
int?main()
{
????/*在雙引號中間輸入Hello?World*/?
????printf("Hello?World");
????return?0;?
}
注:在最新的C標準中,main函數(shù)前的類型為int而不是void

c語言的具體結(jié)構(gòu)

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

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

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

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

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

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

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

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

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

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

良好習慣之規(guī)范

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

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

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

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

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



程序解釋——注釋

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

C語言注釋方法有兩種:

多行注釋:?/* 注釋內(nèi)容 */

單行注釋:?//注釋一行

有名有姓的C(標識符)

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

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

  1. 標識符是嚴格區(qū)分大小寫的。例如Imoocimooc?是兩個不同的標識符。

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

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

變量及賦值

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

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

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

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

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

  1. 先聲明再賦值

  2. 聲明的同時賦值

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

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

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

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

  3. 指針類型

  4. 空類型四大類

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

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

注:

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

  • 而其中short intlong 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):

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

格式化輸出語句

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

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

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

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

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

不可改變的常量

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

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

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

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

    • 實型常量:13.33、-24.4;

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

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

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

#define 標識符 常量值


#include?
#define?POCKETMONEY?10????//定義常量及常量值
int?main()
{
????// POCKETMONEY = 12;??//小明私自增加零花錢對嗎?
????printf("小明今天又得到%d元零花錢\n",?POCKETMONEY);
????return?0;??
}

符號常量不可以被改變。

自動類型轉(zhuǎn)換

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

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

注:

字節(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)換時應注意以下問題:

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

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

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

運算符號

C語言中運算符:

※ 算術(shù)運算符
※ 賦值運算符
※ 關(guān)系運算符
※ 邏輯運算符
※ 三目運算符

算術(shù)運算符

c語言基本運算符:

除法運算中注意:

如果相除的兩個數(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)中。自增自減運算符有以下幾種形式:

賦值運算符

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

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

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

例如 =、-=、*=、/=、%=

分析:定義整型變量a并賦值為3,a = 5;這個算式就等價于a = a 5;?將變量a和5相加之后再賦值給a

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

關(guān)系運算符

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

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

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

邏輯運算符

C語言中的邏輯運算符:

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

  • 與運算?
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

鏈表作為一種基礎的數(shù)據(jù)結(jié)構(gòu),在程序設計中扮演著重要角色。掌握鏈表的高效操作技巧,特別是逆序、合并和循環(huán)檢測,對于提升算法性能和解決復雜問題至關(guān)重要。本文將詳細介紹這些操作的C語言實現(xiàn),并分析其時間復雜度。

關(guān)鍵字: 鏈表 C語言

在C/C++多文件編程中,靜態(tài)變量(static)與全局變量的作用域規(guī)則看似簡單,實則暗藏諸多陷阱。開發(fā)者若未能準確理解其鏈接屬性與生命周期,極易引發(fā)難以調(diào)試的內(nèi)存錯誤、競態(tài)條件以及維護災難。本文將深入剖析這兩類變量的作...

關(guān)鍵字: 靜態(tài)變量 全局變量 C語言

在嵌入式系統(tǒng)和服務器開發(fā)中,日志系統(tǒng)是故障排查和運行監(jiān)控的核心組件。本文基于Linux環(huán)境實現(xiàn)一個輕量級C語言日志庫,支持DEBUG/INFO/WARN/ERROR四級日志分級,并實現(xiàn)按大小滾動的文件輪轉(zhuǎn)機制。該設計在某...

關(guān)鍵字: C語言 嵌入式系統(tǒng)

在嵌入式系統(tǒng)和底層驅(qū)動開發(fā)中,C語言因其高效性和可控性成為主流選擇,但缺乏原生單元測試支持成為開發(fā)痛點。本文提出一種基于宏定義和測試用例管理的輕量級單元測試框架方案,通過自定義斷言宏和測試注冊機制,實現(xiàn)無需外部依賴的嵌入...

關(guān)鍵字: C語言 嵌入式系統(tǒng) 驅(qū)動開發(fā)

在嵌入式系統(tǒng)開發(fā)中,實時操作系統(tǒng)(RTOS)的任務調(diào)度算法直接影響系統(tǒng)的響應速度和資源利用率。時間片輪轉(zhuǎn)(Round-Robin, RR)作為一種經(jīng)典的公平調(diào)度算法,通過為每個任務分配固定時間片實現(xiàn)多任務并發(fā)執(zhí)行。本文將...

關(guān)鍵字: 實時操作系統(tǒng) RTOS C語言

在Linux設備驅(qū)動開發(fā)中,等待隊列(Wait Queue)是實現(xiàn)進程睡眠與喚醒的核心機制,它允許進程在資源不可用時主動放棄CPU,進入可中斷睡眠狀態(tài),待資源就緒后再被喚醒。本文通過C語言模型解析等待隊列的實現(xiàn)原理,結(jié)合...

關(guān)鍵字: 驅(qū)動開發(fā) C語言 Linux

在嵌入式系統(tǒng)開發(fā)中,C語言與匯編的混合編程是優(yōu)化性能、訪問特殊指令或硬件寄存器的關(guān)鍵技術(shù)。然而,內(nèi)聯(lián)匯編的語法差異和寄存器使用規(guī)則常導致難以調(diào)試的問題。本文以ARM Cortex-M和x86架構(gòu)為例,系統(tǒng)梳理內(nèi)聯(lián)匯編的核...

關(guān)鍵字: C語言 匯編混合編程

在計算機安全領域,緩沖區(qū)溢出攻擊長期占據(jù)漏洞利用榜首。這種攻擊通過向程序緩沖區(qū)寫入超出其容量的數(shù)據(jù),覆蓋相鄰內(nèi)存區(qū)域(如返回地址),進而實現(xiàn)任意代碼執(zhí)行。本文將深入探討棧保護機制與安全函數(shù)(如snprintf)的集成防御...

關(guān)鍵字: 棧保護 安全函數(shù) C語言

在嵌入式系統(tǒng)和大規(guī)模數(shù)值計算等性能敏感場景中,程序優(yōu)化是提升效率的關(guān)鍵環(huán)節(jié)。gprof作為GNU工具鏈中的性能分析工具,能夠精準定位CPU時間消耗熱點。本文通過實際案例演示gprof的三個核心使用步驟,幫助開發(fā)者快速識別...

關(guān)鍵字: C語言 gprof 熱點函數(shù)

哈希表作為高效數(shù)據(jù)檢索的核心結(jié)構(gòu),其性能高度依賴沖突解決策略。本文通過C語言實現(xiàn)對比鏈地址法與開放尋址法,揭示兩種方法在內(nèi)存占用、查詢效率及實現(xiàn)復雜度上的差異,為工程實踐提供量化參考。

關(guān)鍵字: 哈希表 鏈地址法 開放尋址法 C語言
關(guān)閉