亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

01_C語言基礎

2024-06-28 13:21:18
字體:
來源:轉載
供稿:網友
01_C語言基礎內容提要:

1. C語言概述2. 數據類型、運算符與表達式3. C語言程序結構

4. VC6.0使用練習

知識詳解01:C語言的歷史

1. C語言與其它語言比較

匯編語言:

(1).可直接對硬件進行操作,執行效率較高;依賴于計算機硬件,可讀性和可移植性較差。

(2).對硬件進行操作,執行效率高,用一串數字代碼表示指令,更接近計算機使用的詳細操作步驟。依賴于計算機硬件(比如寫了一段匯編程序控制51單片機的IO,但是這段程序在AVR上可能起不了啥作用),對于匯編的查看也挺困難

一般高級語言:C++、java、C#等

(1).是在C語言的語法和基本結構上,擴展開發出來的;

(2).硬件操作支持性較差;運行效率不高

2. C語言是貝爾實驗室于70年代初發明的.80年代初,美國國家標準化協會(ANSI)制定了ANSI C標準.3. 后來各個領域都有各自的擴展:如windows下的vc,linux下的GNU C等

注意:C語言是基于平臺的,如果只有C語言,那什么也干不了

知識詳解02:C語言的特點

1.概括的說,C語言同時具有匯編語言和高級語言的雙重特性;

雙重性是指:效率高,可讀性較好

2. 具體地說,C語言的主要特點如下:

(1).語言簡潔、緊湊,使用方便、靈活,32個關鍵字、9種控制語句(控制程序的流向),程序形式自由(一件事情可以用多種方式來實現(如:循環)).(2).運算符豐富(方便程序的設計),34種運算符.(3).數據類型豐富,數據類型有:整形、實型、字符型、數組、指針、結構體、共用體等.(4).具有結構化的控制語句,如(if..else、while、switch等)是完全模塊化和結構化的語言(5).模塊化:將處理復雜的系統分解成更好理解的可管理的模塊的方式(6).結構化:將一個復雜的求解過程分階進行,使得每一塊更容易理解(7).允許直接訪問物理地址,能進行位(bit)操作,可以直接對硬件操作.(8).生成的目標代碼質量高,執行效率高,只比匯編程序生成的目標代碼效率低10%-20%.(9).可移植性好、基本上不做修改就能用于各種型號的計算機和各種操作系統.

(10).與linux的結合性好(Ios, windows, UNIX的核心用C語言實現)Linux、UNIX本身就是用C語言來編寫的.在Linux上用C語言開發的運行效率非常高,尤其在嵌入式領域 C語言更是開發的首選

知識詳解02:關鍵字

1. C的關鍵字共有32個

數據類型關鍵字(12個)

char, short, int, long, float, double, unsigned, signed, struct, union, void, enum

unsigned, signed:是修飾符,int a=125;默認是 signed

void:不可用來定義變量,但可以用它來修飾各種變量

控制語句關鍵字(12個)

if,else,for,do,while,break,case,continue,default,goto(盡量別使用),return,switch

存儲類關鍵字(4個)(重點介紹,因為上面的幾個知識點會在后面介紹)

auto, extern, register, staticextern:可以置于變量或者函數前,以表示變量或者函數的定義在別的文件中,可以外部使用

register:修飾符暗示編譯程序相應的變量將被頻繁地使用,如果可能的話,應將其保存在CPU的寄存器中,以加快其存儲速度。

register變量必須是能被CPU所接受的類型。這通常意味著register變量必須是一個單個的值,并且長度應該小于或者等于整型的長度。不過,有些機器的寄存器也能存放浮點數。因為register變量可能不存放在內存中,所以不能用“&”來獲取register變量的地址

static:

靜態變量都在全局數據區分配內存

靜態全局變量在聲明它的整個文件都是可見的,而在文件之外是不可見的;

其他關鍵字(4個)

const,sizeof,typedef,volatile

volatile:

  確保本條指令不會因編譯器的優化而省略,且要求每次直接讀值.簡單地說就是防止編譯器對代碼進行優化.比如如下程序:

  num=0x55;

  num =0x56;

  num =0x57;

  num =0x58;

    對外部硬件而言,上述四條語句分別表示不同的操作,會產生四種不同的動作,但是編譯器就不能像對待純粹的程序那樣對上述四條語句進行優化,只認為 num=0x58(即忽略前三條語句,只產生一條機器代碼)。如果鍵入volatile,則編譯器會逐一的進行編譯并產生相應的機器代碼(四條)

知識詳解03:語句

1. C語言利用函數體中的可執行語句,向計算機系統發出操作指令;按照語句功能或構成的不同,可將C語言的語句分為5類:

2. 控制語句(9條,可以細分為三種)

選擇結構控制語句

if()~else~,switch()~

循環結構控制語句

for()~,while()~, do~while(),break, continue

其他控制語句

return, goto

goto

return功能:

終止執行函數,賦值(可選)

將控制權返回給調用函數的下一條語句

那函數的返回值是存在哪兒的?

對于四字節的返回值,一般編譯器把它放入eax寄存器里,而大于4字節的返回值,一般是放在會在棧中返回地址前的位置??梢钥隙ǖ氖?,應該不是在堆里。

例如:

3. 函數調用語句

函數調用語句由一次函數調用加一個分號構成.

例如:

PRintf(“hello world!”);

scanf(“%d”,&i);

4. 表達式語句

表達式語句是由表達式后加一個分號構成,

例如:

“num = 5”是表達式,

“num = 5;”是賦值語;

5. 空語句

空語句由一個分號構成;空語句什么操作也不執行.

6. 復合語句

復合語句由大括號括起來的一組語句構成.

main( )

{

{ } //復合語句,注意大括號后不需要分;

}

復合語句一般與其它語句配合使用:

如for( ; ; ) { }

知識詳解04:總體結構

1. 在C語言中,除實現順序、選擇和循環三種基本結構等9條控制語句外,輸入輸出操作都由標準庫函數(不是C語言的組成部分)來實現.2. 一個完整的C語言程序,是由一個、且只能有一個main()函數(又稱主函數)和若干個其他函數結合而成,或僅由一個main()函數構成.3. 所有函數既可以放置在同一個源文件里,也可以放置在不同的源文件里

知識詳解05:C文件結構

1. 一個基于C的軟件系統一般由以下文件構成:

若干個C文件:每個C文件中包含若干個函數.

若干個頭文件:每個頭文件中包含一些數據結構的定義以及C函數、變量的原型聲明.

若干個庫文件:庫文件是編譯后的二進制文件,一般由若干C文件編譯后組成,其中包含了若干個函數的可執行代碼;這些庫文件中的函數可執行代碼在連接的時候合并到最終的可執行文件中.

若干個make文件:make文件描述了多個文件中的依賴關系以及生成最終可執行文件或庫文件所需要的信息

知識詳解06:數據類型

1. 數據類型

2. 常量與變量

常量:在程序運行過程中,其值不能被改變的量(注意:不能反過來說)

整型 100,125,-100,

實型 3.14 , 0.125,-3.789

字符型 ‘a’,‘b’,‘2’

字符串 “a”,“ab”,“1232”

變量:其值可以改變,變量名只能由字母、數字、下劃線組成,第一個字必須為字母或下劃線;變量在編譯時為其分配相應的內存地址.

變量其實就是用來放置數值等內容的“盒子”

3. 整型數據

整型常量的表示方法:十進制;八進制以數字0開頭,如0123;十六進制以0x開頭,如0x1e

整型變量分為

有/無符號基本整型 (un/signed) int

有/無符號短整型 (un/signed) short(int)

有/無符號長整型 (un/signed) long (int)

c99中的整數常量:在c99中,以LL或ll(兩個字母大小寫要一致)結尾的整數常量是long long int

注意:我們在學校學習的TC環境中,int為兩個字節,因為TC實際上是在PC機上模擬了一個16位的環境,在VC、Linux等32位環境下都是4個字節;可以使用sizeof(類型|變量)運算符求得

4. 實型數據

實型常量

實型也稱為浮點型,實型常量也稱為實數或者浮點數

十進制形式:由數字和小數點組成:0.0、0.12、5.0

指數形式:123e3代表123*10的三次方

實型變量

單精度(float)和雙精度(double)

float型: 占4字節,7位有效數字(十進制)

Double型: 占8字節,15~16位有效數字 (十進制)

包含小數點卻不以f結尾的常量是double

小數點以f結尾

5. 字符數據

字符常量:用單引號括起來,如:‘a’、‘b’等.

轉義字符:以反斜杠“/”開頭,后跟一個或幾個字符、如‘/n’ ‘/t’等,分別代表換行,橫向跳格.

請在字符串字面量中小心使用八進制數和十六進制數的轉義序列。八進制數的轉義序列在3個數字之后結束,或者在第一個非八進制數字符處結束。例如字符串“/1234”包含兩個字符(/123和4),而字符串“/189”包含3個字符(/1、8和9)。而十六進制數的轉義序列則不限制為3個數字,而是直到第一個非十六進制數字符截止。

實例1:

實例2:

實例3:

大多數編譯器會報以上錯誤,因為十六進制數的轉義序列通常范圍限制在/x0~/xff

字符變量:

用char定義的變量只能存放一個字符常量;

每個字符變量被分配一個字節的內存空間;字符值以ASCII碼的形式存放在變量的內存單元中

注意:

a = 'x';

a變量中存放的是字符'x'的ASCII :120

即a=120跟a='x'在本質上是一致的

6. 字符串常量

是由雙引號括起來的字符序列,如“CHINA”、“C program”,“$12.5”等都是合法的字符串常量

7. 字符串常量與字符常量的不同

例子1:

例子2:

上例說明a,b是等價的,誰與誰等價就去看他們內存中的值是否相等。

8. 符號常量

在C語言中,可以用一個標識符來表示一個常量,稱之為符號常量,一般形式為:

#define 標識符 常量

其中#define是一條預處理命令,稱為宏定義命令,其功能是把該標識符定義為其后的常量值.

例:各數據類型的運算:(路徑:/學生版/01_C語言基礎/00_基礎代碼/1_0

9. C99中的布爾型

bool flag;//定義一個bool型變量,需要包含頭文件#include <stdbool.h>

10. 數據有不同的類型,不同類型數據之間進行混合運算時必然涉及到類型的轉換問題.轉換的方法有兩種

自動轉換:

遵循一定的規則,由編譯系統自動完成.

強制類型轉換:

把表達式的運算結果強制轉換成所需的數據類型

不管那樣轉換,它都會盡量保證數據不被丟失

11. 自動轉換的原則

轉換方向:

說明

橫向箭頭,表示必須的轉換(有問題);char,short必須轉換成int型

數據類型轉換的規律:占用內存字節數少(值域小)的類型,向占用內存字節數多(值域大)的類型轉換,以保證精度不降低

上題:signed ---> unsigned

12. 強制轉換:通過類型轉換運算來實現

(類型說明符) (表達式)

其功能:把表達式的運算結果強制轉換成類型說明符所表示的類型,例如:

(float)a; // 把a的值轉換為實型

(int)(x+y); // 把x+y的結果值轉換為整型

注意:

類型說明符和表達式都必須加括號;

無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變量的數據長度進行的臨時性轉換,而不改變數據定義的類型

例子1-類型不改變:

例子2-數值 不改變 :

知識詳解07:運算符與表達式

1. 數據在運算中使用的運算符包括:

運算符的種類、優先級和結合性

2. 運算符的種類

C語言中運算符和表達式數量之多,在高級語言中是少見的.正是由于豐富的運算符和表達式使C語言功能十分完善

3. C語言常用運算符

算術運算符 (+、-、*、/、%)

關系運算符 (>、<、==、>=、<=、!= )

邏輯運算符 (!、&&、||)

位運算符 (<<、>>、&、|、 ~ 、∧ )

賦值運算符 (=、及其擴展賦值運算符)

條件運算符 (?:)

逗號運算符 (,)

指針運算符 (*和&)

求字節數運算符(sizeof( ))

強制類型轉換運算符((類型))

分量運算符(.->)

下標運算符([])

其他( 如函數調用運算符())

例子:

等號大于逗號 的優先級。

4. 用算術運算符將運算對象(也稱操作數)連接起來的、符合C語法規則的式子,稱為C算術表達式.運算對象包括常量、變量、函數等(函數指的是函數的返回值)

例如: a*b/c-1.5+'a′

5. 復合的賦值運算符

在賦值符“=”之前加上其它二目運算符可構成復合賦值符:+=,-=,*=,%=,<<=,>>=,&=,^=

a += 5 //等價于 a = a+5;

x *= y+7 //等價于x = x*(y+7)

6. 自增、自減運算符

作用是使變量的值增1或減1

++i,--i(先加/減,后使用)

i++,i-- (先使用,后加/減)

例如1

例子2:

例子3:

7. 在判斷同優先級運算符計算順序時,要注意結合性,詳細的優先級及結合性請參考以下表格8. 優先級

知識詳解08:C語言程序結構

1. C語言支持最基本的三種程序運行結構

順序結構、選擇結構、循環結構

2. 順序結構:程序按順序執行,不發生跳轉.3. 選擇結構:依據是否滿足條件,執行相應功能.

if(表達式)語句;

if(表達式)語句1 else 語句2;

if(表達式1)語句1;

else if(表達式2)語句2;

else 語句n

注意:if......else if..........else if.....else,這只能響應一個條件

舉例

例子1:判斷一個數能否被2整除。(練習if)

例子2:分別判斷一個數被2取余的余數。(練習if{ }else{ })

例子3: 分別判斷一個數被3取余的余數。(練習if{ }else if{ }else if{ })

4. 條件運算符

(a>b)?a:b;

說明:條件為真,表達式取值a,否則取值b

條件運算符的運算優先級低于關系運算符和算術運算符,但高于賦值符;因max=(a>b)?a:b;可以去掉括號而寫為 max=a>b?a:b;

? 和 :是一對運算符,不能分開單獨使用.

條件運算符的結合方向是自右至左.

簡潔、但容易出錯,一般不推薦使用

表達式不能是浮點數、字符串。

5. 循環結構

goto語句(盡量少使用).

while語句 先判斷表達式后執行.

do-while語句 先執行語句后判斷表達式.

for( ; ; ){ }

C99中的for語句

在for語句的第一個表達式可以用來定義變量,該變量只能在循環體內使用

gcc編譯

解決這個錯誤只需要在編譯的時候加上-std=c99

6. break語句和continue語句的區別

break語句用于跳出本層循環.

continue用于結束本次循環


上一篇:git配置

下一篇:initrd.gz的解壓和制作

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品av在线| 91地址最新发布| 国产精品久久久久久婷婷天堂| 欧美猛少妇色xxxxx| 色偷偷偷综合中文字幕;dd| 国产91精品在线播放| 夜夜嗨av一区二区三区四区| 久久男人资源视频| 久久手机免费视频| 欧美精品成人91久久久久久久| 亚洲视频一区二区| 日韩中文字幕在线免费观看| 欧美日韩国产一区中文午夜| 精品久久久久久久久中文字幕| 国产成人精品日本亚洲| 日韩网站免费观看高清| 视频在线观看一区二区| 不卡av电影在线观看| 91香蕉嫩草神马影院在线观看| 久久国产精品偷| 欧美在线一区二区视频| 国产欧美一区二区三区四区| 在线日韩第一页| 亚洲黄色www网站| 亚洲性无码av在线| 欧美性猛交丰臀xxxxx网站| 久久国产精品影片| 日本不卡免费高清视频| 亚洲欧美日韩国产中文专区| 国产欧美在线播放| 成人h视频在线观看播放| 久久亚洲精品国产亚洲老地址| 亚洲精品久久久久久久久久久久久| 欧美日韩综合视频网址| 午夜美女久久久久爽久久| 法国裸体一区二区| 精品国内产的精品视频在线观看| 亚洲影院色无极综合| 97久久精品人搡人人玩| 国产日韩欧美日韩| 欧美极品少妇xxxxⅹ免费视频| 日韩视频一区在线| 亚洲欧美精品一区| 91夜夜揉人人捏人人添红杏| 亚洲深夜福利视频| 久久视频精品在线| 性欧美视频videos6一9| 久久av红桃一区二区小说| 欧美精品免费播放| 精品一区二区亚洲| 久久国产精品亚洲| 2018国产精品视频| 日韩精品久久久久久福利| 国产日韩综合一区二区性色av| 91欧美精品成人综合在线观看| 亚洲精品国产免费| 91精品国产91久久| 奇米影视亚洲狠狠色| 日韩69视频在线观看| 亚洲欧美国产精品va在线观看| 亚洲人成网站999久久久综合| 成人黄色午夜影院| 国产欧美va欧美va香蕉在| 欧美激情精品在线| 国产91九色视频| 色噜噜国产精品视频一区二区| 欧美一级电影免费在线观看| 国产精品香蕉国产| 久久激情视频久久| 久久久久国产一区二区三区| 国产精品日韩在线观看| 亚洲国产精品悠悠久久琪琪| 日韩hd视频在线观看| 97在线视频免费播放| 国产亚洲欧美另类中文| 亚洲精品一区二区网址| 亚洲欧美资源在线| 亚洲人成网在线播放| 最近2019中文字幕mv免费看| 国产激情久久久久| 成人情趣片在线观看免费| 两个人的视频www国产精品| 亚洲精品电影网| 亚洲另类图片色| 久热精品视频在线观看一区| 欧美一级在线播放| 亚洲欧洲成视频免费观看| 亚洲毛片在线观看.| 欧美疯狂xxxx大交乱88av| 亚洲国产精品va在线看黑人动漫| 中文字幕亚洲无线码在线一区| 久久久久久久999| 国产精品久久久久久久久| 亚洲最大av网站| 国产一区二区丝袜高跟鞋图片| 久久亚洲精品小早川怜子66| 国产精品一久久香蕉国产线看观看| 欧美日韩高清区| 日韩一区在线视频| 精品无人区乱码1区2区3区在线| 欧美在线影院在线视频| 久久精品青青大伊人av| 国模极品一区二区三区| 狠狠躁夜夜躁人人爽超碰91| 亚洲黄色在线看| 69国产精品成人在线播放| 午夜剧场成人观在线视频免费观看| 国产精品极品在线| 中文字幕欧美国内| 亚洲三级免费看| www国产亚洲精品久久网站| 伊人久久久久久久久久久| 欧美日韩成人在线播放| 国产亚洲精品久久| 在线中文字幕日韩| 国产精彩精品视频| 国产九九精品视频| 国产精品www色诱视频| 中国china体内裑精亚洲片| 伊人久久精品视频| 国产成人小视频在线观看| 欧美精品在线免费观看| 亚洲欧美色图片| 国产精品专区第二| 91成人免费观看网站| 欧美视频在线观看 亚洲欧| 日韩暖暖在线视频| 自拍偷拍亚洲一区| 欧美精品18videosex性欧美| 欧美大全免费观看电视剧大泉洋| 国产精品视频白浆免费视频| 国产精品入口尤物| 第一福利永久视频精品| 欧美在线一级va免费观看| 日韩高清电影免费观看完整版| 亚洲永久免费观看| 在线播放亚洲激情| 久久久www成人免费精品张筱雨| 亚洲视频在线播放| 日韩精品免费电影| 欧美激情视频在线观看| 久久久亚洲国产天美传媒修理工| 一色桃子一区二区| 亚洲男女自偷自拍图片另类| 国产欧美一区二区白浆黑人| 日韩成人高清在线| 日韩麻豆第一页| 国产精品久久国产精品99gif| 国产日韩欧美中文在线播放| 中文字幕日韩欧美精品在线观看| 久久香蕉国产线看观看av| 欧美日韩在线视频一区| 久久久久久亚洲精品| 欧美一级电影免费在线观看| 国产精品美女久久久久av超清| 国精产品一区一区三区有限在线| 91精品在线看| 美女视频久久黄| 欧美极度另类性三渗透| 国产中文日韩欧美| 97视频免费观看| 欧美男插女视频| 欧美激情免费看| 一区二区三区日韩在线|