第二章語言編程實(shí)踐_第1頁
第二章語言編程實(shí)踐_第2頁
第二章語言編程實(shí)踐_第3頁
第二章語言編程實(shí)踐_第4頁
第二章語言編程實(shí)踐_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

條件編譯特點(diǎn)和主要用文件包含的路徑查詢規(guī)C語言擴(kuò)展宏定義的用嵌入式家園 嵌入式家園-開發(fā)板商 第二C語言編程嵌入式家園 嵌入式家園-開發(fā)板商 在文件包含中和有什么區(qū)別如嵌入式家園 嵌入式家園-開發(fā)板商 本章結(jié)本章結(jié)C語C語言編程實(shí)嵌入式嵌入式家園-開發(fā)板商 熟悉C語言編嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 的概的概C語言幾個C語言編程易嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 入式式家 嵌式家園-開發(fā)板商 位運(yùn)算符的含功能位運(yùn)算&:|:^:~<<>>嵌入式家園 嵌入式家園-開發(fā)板商 要點(diǎn)位運(yùn)算除~以外,均為二目運(yùn)算嵌入式家園 嵌入式家園-開發(fā)板商 主要用途:取(或保留)1個數(shù)的某(些)位,其余各位置&

嵌入式家園 嵌入式家園-開發(fā)板商

嵌入式家 嵌入式家園-開發(fā)板商 格式:x^y規(guī)則:對應(yīng)位相同時為0,不同時為1:3^9=100,為0的變?yōu)?)^ 園w.e嵌入式家園-開發(fā)板商 求反格式:~嵌入式家園 嵌入式家園-開發(fā)板商 格式:x<<位數(shù)規(guī)則:使操作數(shù)的各位左移,低位補(bǔ)5<<2=20嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 ::對無符號數(shù)和有符號中的正數(shù),補(bǔ)補(bǔ)1的稱為“算術(shù)右移”。例如,20>>2=5例如,5<<2=20:0101→202=5:1010000101嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 2.1.6位運(yùn)算2.1.6位運(yùn)算例)使變量num右移8位,將8~11位移到低4構(gòu)造1個低4位為1、其余各位為0的整與num/*程序功能:輸出一個整數(shù)中由8~11位構(gòu)成的數(shù) intnum,printf("Inputaintegernumber:");num /*右移8位,將8~11位移到低4位上mask=~(~0<< /*間接構(gòu)造1個低4位為1、其余各位為0的整數(shù)printf("result=0x%x\n",num&}程序運(yùn)行情況Inputaintegernumber:1000程序說明:~~0按位取0的反,為全1;左移4位后,其低位為0,其余各位為再按位取反,4為 0。這個整數(shù)正是我們所需嵌入式家園-開發(fā)板商城 位運(yùn)算例題目:從鍵盤上輸入1個正整數(shù)給int變量num,按二進(jìn)制位輸出該#include"stdio.h"{intnum,mask,printf("Inputaintegernumber:");mask=1<<15;/*構(gòu)造1個 為1、其余各位為0的整數(shù) 字printf("%d=",for(i=1;printf("%d=",{

程序運(yùn)行Inputaintegerputchar(num&mask?’1’: /*輸出 的值num<<=/*將 移到num<<=

if(i%4==0)}

/*四位一組,用逗號分開}嵌入式家園-開發(fā)板商 指針特函數(shù)指數(shù)組與動態(tài)申嵌入式家園 嵌入式家園-開發(fā)板商 某 被定位在CPU 在ROM或FLASH的特定單元所燒錄的漢字和在ROM或FLASH的特定單元所燒錄的漢字和英文字嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 實(shí)例unsignedchar*p=(unsignedchar數(shù)據(jù)指針的運(yùn)int*p=(intp++(或++p)pp+sizeof(int),p--(或--p)->p=p-sizeof(int)。嵌入式家園 嵌入式家園-開發(fā)板商 函數(shù)指函數(shù)指針的三個的操作是將函數(shù)生的操作是將函數(shù)生成的目標(biāo)代碼的首地址賦給CPU的PC寄嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 函數(shù)指函數(shù)指針實(shí)typedefvoid(*lpFunction)();lpFunctionlpReset=lpReset();/*調(diào)用函數(shù)*/函數(shù)指針練習(xí)嵌入式家園 嵌入式家園-開發(fā)板商 動態(tài)申請內(nèi)存方式可以用較大的數(shù)組;;嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 C語typedef與definedefineenum嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 const說說以下的區(qū)constinta;intconsta;constint*a;int*constintconst*aconst的優(yōu)嵌入式家園 嵌入式家園-開發(fā)板商 說說以下的區(qū)constintintconsta;constint*a;int*constintconst*aconst的優(yōu)嵌入式家園 嵌入式家園-開發(fā)板商 typedef與嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 typedef與#define#defineyour_intintyour_inta,相當(dāng)于int*ab只是簡單的宏替即int*a;intb;

typedefint*your_int;your_inta,bab都為指向int即int*a;int嵌入式家園 嵌入式家園-開發(fā)板商 define#enum嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 define#enumenum{}嵌入式家園 嵌入式家園-開發(fā)板商 define嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 static的特 static的作 嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 C語言編程要C嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 空間C程空間C語言的組堆嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 2.5.1C程空間C2.5.1C程空間棧棧||\|/||堆堆嵌入式園嵌入式家園-開發(fā)板

/Heap與Heap與區(qū)Stack空間有限,Heap是很大的區(qū)嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 嵌入式家園 嵌入式家園-開發(fā)板商 定義:全局變量之前加上關(guān)鍵字特性 嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 實(shí)例分析externintn;intmain(){n=return}

staticintvoid{}結(jié)果 中的變量找嵌入式家園-開發(fā)板商 優(yōu)優(yōu)。貝嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 2.5.3.2局2.5.3.2局部靜態(tài)定局部變量之前加上關(guān)鍵字static特區(qū)初始化的全局靜態(tài)變量會被程序自動初始化為嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 2.5.3.3靜2.5.3.3靜態(tài)函在函數(shù)的返回類型前加上關(guān)鍵字嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 實(shí)例分析voidintmain(){renturn0;}

void{printf("display()hasbeencalled}staticvoid{printf("staticdis()hasbeen}2.5.3.32.5.3.3靜態(tài)函結(jié)果文件分別編譯通過,但是連接的時候找不到函數(shù)staticdis()嵌入式嵌入式家園-開發(fā)板商 2.5.3.4staticsintmain(){intfor(i=1;i<=3;return0;}void{staticnum=0;printf("Ihavebeen}

結(jié)果Ihavebeencalled1Ihavebeencalled2times.Ihavebeencalled3times.嵌入式家園 嵌入式家園-開發(fā)板商 array_name和&array_namechara[MAX];char*p=a;char*pa=

/*arrayofMAX'charchar(*pb)[MAX]= 嵌入式家園 嵌入式家園-開發(fā)板商 array_name和&array_nameintmain(){

結(jié)果char*p=a;/*運(yùn)行下面這句后,gcc提示的錯誤為:cannot

from‘char(*)[5]’tochar*’,&a的類型應(yīng)該是指向一組的指針//char*pa=point_to_str=&a;printf("%s\n%s\n",p,point_to_str);}嵌入式家園 嵌入式家園-開發(fā)板商 強(qiáng)制數(shù)據(jù)類型{inti,j;i=-

(int)-}嵌入式家園 嵌入式家園-開發(fā)板商 強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換的

float 低-》高==高-》低==嵌入式家園 嵌入式家園-開發(fā)板商 強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換的嵌入式家園 嵌入式家園-開發(fā)板商 C強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)化要注意哪些方嵌入式家園 嵌入式家園-開發(fā)板商 C語言編程易犯毛病嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 書寫標(biāo)識符時{inta=5;}嵌入式家園 嵌入式家園-開發(fā)板商 {floata,b;}嵌入式家園 嵌入式家園-開發(fā)板商 將字符常量與字符串常charc;c="a";嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 將字符常量與字符串常charc;c="a";字符常量是由一對單引號嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 忽略了“=”與“==”if(a==3)a=b;if(a=3)a=b;嵌入式家園 嵌入式家園-開發(fā)板商 忘記加分{{}嵌入式家園 嵌入式家園-開發(fā)板商 多加分{{for(i=0;i<5;i++)if嵌入式家園 嵌入式家園-開發(fā)板商 switch語句中漏寫break{case'A': case'B': case case'D': }casebreak嵌入式家園 嵌入式家園-開發(fā)板商 忽視了while和do-whileWhile語句分 {{inta=0,i; }}{inta=0,i;}嵌入式家園 嵌入式家園-開發(fā)板商 定義數(shù)組時誤用intn;inta[n];C不允許對數(shù)組的大小作動態(tài)定嵌入式家園 嵌入式家園-開發(fā)板商 數(shù)組最大下{}

staticint數(shù)組其下標(biāo)值由0a數(shù)組有N個元素,最大下標(biāo)是N-嵌入式家園 嵌入式家園-開發(fā)板商 同時定義了形參和函數(shù)中的局部變intx,y;{intz;}intx,y;{intz;}intx,y,z;{}注注形參應(yīng)該在函數(shù)體外定局部變量應(yīng)該在函數(shù)體內(nèi)定嵌入式家園 嵌入式家園-開發(fā)板商 誤認(rèn)為形參值的改變會影響實(shí)參的

語句改mainmain{printf}intswap(intx,int{intz;}main{intx=3,y=4;int*p1,*p2;printf}intswap(int*p1,int{intz;}注嵌入式家園-開發(fā)板商 函數(shù)的實(shí)參和形參類型不一main{intx=3,y=4;int*p1,*p2;printf}

P1P1---intswap(intp1,int{intz;}嵌入式家園 嵌入式家園-開發(fā)板商 C語言的調(diào)嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 嵌入式家園 嵌入式家園-開發(fā)板商 死循/*/*initializeadoubledimensionarray*/for(a=0;a<10;++a){for(b=0;b<10;{}}嵌入式家園 嵌入式家園-開發(fā)板商 運(yùn)行時間比期望的時/*AsubroutinetocalculateFibonaccinumbers*/intfib(inti){if(ireturnfib(i-1)+fib(i-}嵌入式家園 嵌入式家園-開發(fā)板商 等待正確的#include<stdio.h>{FILE*in=fopen("numbers.dat","r");inttotal=0,n;while(fscanf(in,"%d",&n)!{total+=}printf("Thetotalis%d\n",total);fclose(in);}嵌入式家園 嵌入式家園-開發(fā)板商 如何檢測內(nèi) 最嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 如何檢測內(nèi)voidSayHi(char*name{UpName=malloc(UpName=malloc(strlen(name)/*Allocatespaceforthename*for(a=0;a<strlen(name);UpName[a]=toupper(name[a]);UpName[a]='\0‘; o,%si\n",UpName}int{SayHi("Dave");return(0);}2.7.2如2.7.2如何檢測內(nèi)嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 調(diào)試程序的最好方法嵌入式家園 嵌入式家園-開發(fā)板商 嵌入式家園 嵌入式家園-開發(fā)板商 用什么辦法才能找出程序嵌入式家園 嵌入式家園-開發(fā)板商 如何從一開始就避免嵌入式家園 嵌入式家園-開發(fā)板商 能報告條件失敗的 #defineNDEBUG嵌入式家園-開發(fā)板嵌入式家園-開發(fā)板 voidvoid{char*buffer=malloc(10000);assert(buffer!=NULL);}{assert(Denom!=0)return((float)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論