《單片機原理及系統(tǒng)設計實用教程》課件第3章 C程序_第1頁
《單片機原理及系統(tǒng)設計實用教程》課件第3章 C程序_第2頁
《單片機原理及系統(tǒng)設計實用教程》課件第3章 C程序_第3頁
《單片機原理及系統(tǒng)設計實用教程》課件第3章 C程序_第4頁
《單片機原理及系統(tǒng)設計實用教程》課件第3章 C程序_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

51系列單片機C程序設計

概述

20世紀70年代初問世的。一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式發(fā)表了C語言

對于8051及其兼容單片機,目前支持的語言主要有:匯編、BASIC、PL/M和C語言。其中后三種為高級語言。

C源程序的結構特點

l

一個C語言源程序可以由一個或多個源文件組成。l

每個源文件可由一個或多個函數組成。l

一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。l

源程序中可以有預處理命令(include命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。l

每一個說明、每一個語句都必須以分號結尾。但預處理命令,函數頭和花括號“}”之后不能加分號。l

標識符、關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。C語言的字符集

字符是組成語言最基本的元素。C語言字符集由字母、數字、空格、標點和特殊字符組成。在字符常量、字符串常量和注釋中還可以使用漢字或其他可表示的圖形符號。

小寫字母a~z共26個,大寫字母A~Z共26個;0~9共10個;空格符、制表符、換行符等

C語言詞匯在C語言中使用的詞匯分為六類:在C語言中使用的詞匯分為六類:標識符、關鍵字、運算符、分隔符、常量和注釋符等。標識符

在程序中使用的變量名、函數名、標號等統(tǒng)稱為標識符。除庫函數的函數名由系統(tǒng)定義外,其余都由用戶自定義。C語言規(guī)定,標識符只能是字母(A~Z,a~z)、數字(0~9)、下劃線(_)(請確認是否正確)組成的字符串,并且其第一個字符必須是字母或下劃線。關鍵字

關鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標識符不應與關鍵字相同。C語言的關鍵字分為以下幾類

類型說明符,語句定義符,預處理命令字

運算符

C語言中含有相當豐富的運算符。運算符與變量、函數一起組成表達式,表示各種運算功能。運算符由一個或多個字符組成

分隔符

C語言中采用的分隔符有逗號和空格兩種

常量

C語言中使用的常量可分為數字常量、字符常量、字符串常量、符號常量、轉義字符等多種

注釋符C語言的注釋符是以“/*”開頭并以“*/”結尾的串。在“/*”和“*/”之間的即為注釋。程序編譯時,不對注釋作任何處理。

數據類型、運算符、表達式

程序中使用的各種變量都應預先加以說明,即先說明,后使用對變量的說明可以包括三個方面:

數據類型

存儲類型作用域所謂數據類型是按被說明量的性質、表示形式、占據存儲空間的多少和構造特點來劃分的。

可分為:基本數據類型、構造數據類型、指針類型和空類型

基本數據類型基本數據類型特點是,其值不可以再分解為其他類型。

構造數據類型

數組類型結構類型聯(lián)合類型

指針類型

基本數據類型

整型量

整型量包括整型常量和整型變量

整型常量

八進制整常數

十六進制整常數

十進制整常數

整型變量

基本型短整量長整型無符號型

各類整型量的表示范圍和占用內存字節(jié)表

類型說明符

數的范圍分配字節(jié)數int

-32768~32767

2shortint

-32768~32767

2signedint

-32768~32767

2unsignedint

0~65535

2longint

-2147483648~21474836473unsignedlong0~4294967295

3在書寫變量說明時,應注意

l

允許在一個類型說明符后,說明多個相同類型的變量。各變量名之間用逗號間隔。類型說明符與變量名之間至少用一個空格間隔。l

最后一個變量名之后必須以“;”號結尾。l

變量說明必須放在變量使用之前。一般放在函數體的開頭部分。字符型

字符常量

字符常量是用單引號括起來的一個字符。例如'a','b','=','+','?'字符變量

字符變量的取值是字符常量,即單個字符。字符變量的類型說明符是char。

字符串常量

字符串常量是由一對雙引號括起的字符序列。例如:"CHINA"、"Cprogram:"、"$12.5"等都是合法的字符串常量。

基本運算符和表達式

基本運算符

C語言的運算符不僅具有不同的優(yōu)先級,而且還有一個特點,就是它的結合性。在表達式中,各運算量參與運算的先后順序不僅要遵守運算符優(yōu)先級別的規(guī)定,還要受運算符結合性的制約,以便確定是自左向右進行運算還是自右向左進行運算。這種結合性是其他高級語言的運算符所沒有的,因此也增加了C語言的復雜性。

運算符的種類

算術運算符

用于各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)和自減(--)共七種。

關系運算符

關系運算符用于比較運算。包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。

邏輯運算符用于邏輯運算,包括與(&&)、或(||)、非(!)三種。位操作運算符

參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)和右移(>>)六種

賦值運算符

用于賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。

條件運算符

(?:):這是一個三目運算符,也是C語言中的惟一的三目運算,用于條件求值。逗號運算符

用于把若干表達式組合成一個表達式(,)。

指針運算符用于取內容(*)和取地址(&)二種運算。

求字節(jié)數運算符用于計算數據類型所占的字節(jié)數(sizeof)。特殊運算符有括號(),下標[],成員(→,.)等幾種。

優(yōu)先級和結合性

運算符的運算優(yōu)先級共分為15級,1級最高,15級最低

C語言中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)

算術運算符和算術表達式運算符

加法運算符(+)

減法運算符(-)

乘法運算符(*)

除法運算符(/)

求余運算符(或模運算符“%”)

自增1和自減1運算符

自增1運算符記為“++”,自減1運算符記為“--”i++

i參與運算后,i的值再自增1。i--

i參與運算后,i的值再自減1。

例如:Voidmain(){

inti=8;

printf("%d\n",++i);

printf("%d\n",--i);

printf("%d\n",i++);

printf("%d\n",i--);

}算術表達式

算術表達式是由算術運算符和括號連接起來的式子,以下是算術表達式的例子:

a+b

(a*2)/c

(x+r)*8-(a+b)/7

++i

sin(x)+sin(y)

(++i)-(j++)+(k--)賦值運算符和賦值表達式

簡單賦值運算符和表達式,簡單賦值運算符記為“=”。由“=”連接的式子稱為賦值表達式。其一般形式為:變量=表達式

復合賦值符及表達式

在賦值符“=”之前加上其他二目運算符可構成復合賦值符。如:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=例如:a+=5等價于a=a+5

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

r%=p等價于r=r%p逗號運算符

其一般形式為:表達式1、表達式2其求值過程是分別求兩個表達式的值,并以表達式2的值作為整個逗號表達式的值。

例如:inta=2,b=4,c=6,x,y;x=a+b,y=b+c;三目運算符

(?:):主要用于條件求值。例如:inta,b,c;…………..………..…………….c=(a>b?6:9);C51的數據類型

C51常用的數據類型有:位型(bit)、無符號字符型(unsignedchar)、有符號字符型(signedchar)、無符號整型(unsignedint)、有符號整型(signedint)、無符號長整型(unsignedlong)、有符號長整型(signedlong)、浮點型(float)和雙精度浮點型(double)。除了基本的數據類型外,C51還支持指針和構造數據類型。

特殊功能寄存器sfr、sfr16和位設置數據類型sbit。sfr、sfr16可以將MCU中RAM的地址于特定的符號聯(lián)系起來書寫格式為:sfr標記符=絕對地址sfr16標記符=絕對地址例如:sfr SCON=0x98;/*定義SCON代表內存地址的0x98,即通過讀寫SCON就能訪問該地址(串口的控制寄存器)*/sbit用于定義sfr寄存器中可以為尋址的位例如sfrSCON=0x98;sbitbit0=SCON^0;/*定義bit0位SCON的第0位,“^”符號用于指示第幾位*/C語言程序設計

從程序流程的角度來看,程序可以分為三種基本結構,即順序結構、分支結構和循環(huán)結構。

C語句可分為以下五類:l

表達式語句;l

函數調用語句;l

控制語句;l

復合語句;空語句

表達式語句

表達式語句由表達式加上分號(;)組成。其一般形式為:表達式;。執(zhí)行表達式語句就是計算表達式的值。例如:x=y+z;函數調用語句

函數調用語句由函數名、實際參數加上分號“;”組成。其一般形式為:函數名(實際參數表);。

控制語句

控制語句用于控制程序的流程,以實現(xiàn)程序的各種結構方式

l

條件判斷語句:if語句,switch語句;l

循環(huán)執(zhí)行語句:dowhile語句,while語句,for語句;l

轉向語句:break語句,goto語句,continue語句,return語句。復合語句把多個語句用括號{}括起來組成的一個語句稱復合語句。

在程序中應把復合語句看成是單條語句,而不是多條語句,例如:

{x=y+z;a=b+c;}空語句

只有分號(;)組成的語句稱為空語句。

分支程序

程序的分支都是通過關系運算符來判斷程序的走向的

關系運算符和表達式在C語言中有以下關系運算符:l

<:小于l

<=:小于或等于

l

>:大于l

>=:大于或等于l

==:等于l

!=:不等于

邏輯運算符和表達式

在C語言中提供了三種邏輯運算符:與運算(&&)、或運算(||)和非運算(!)。與運算(&&)、或運算(||)均為雙目運算符。運算方向具有左結合性。

非運算符(!)為單目運算符,具有右結合性。

邏輯運算的值邏輯運算的值也為“真”和“假”兩種,用“1”和“0”來表示

分支語句if語句用if語句可以構成分支結構。它根據給定的條件進行判斷,以決定執(zhí)行某個分支程序段。C語言的if語句有三種基本形式

基本形式

if(表達式)語句

f(條件){

語句;

……

……}if-else形式

形式為:if(表達式)語句1;

else語句2;

if-else-if形式

if(表達式1)語句1;

elseif(表達式2)語句2;

elseif(表達式3)語句3;

elseif(表達式m)語句m;

else語句n;

條件運算符和條件表達式

條件運算符為“?”和“:”,它是一個三目運算符,即有三個參與運算的量。由條件運算符組成條件表達式的一般形式為:表達式1?表達式2:

表達式3其求值規(guī)則為:如果表達式1的值為真,則以表達式2的值作為條件表達式的值,否則以表達式2的值作為整個條件表達式的值。條件表達式通常用于賦值語句之中。

switch語句C語言還提供了另一種用于多分支選擇的switch語句,其一般形式為:switch(表達式){case常量表達式1:語句1;case常量表達式2:語句2;…

case常量表達式n:語句n;default:語句n+1;}

return語句

該語句的作用是從子程序中返回,格式為:return(語句)其中括號里的可省略,表示不需要返回值。voidfunction1(unsignedchara){ unsignedcharx,y;

…………………….…………..………………...return;}

unsignedcharfunction1(unsignedchara){ unsignedcharx,y;

…………………….…………..………………...return(x+y);}此時子程序返回一個值

循環(huán)語句

while循環(huán)語句

while語句的一般形式為:while(表達式)語句;其中,表達式是循環(huán)條件,語句為循環(huán)體。while語句的語義是:計算表達式的值,當值為真(非0)時,執(zhí)行循環(huán)體語句。

例如:while(P1_1!=0);while(P1_1!=1);上面兩個while語句都是空語句,作用是等待信號的發(fā)生(上升沿跳變)

do-while循環(huán)語句

do-while語句的一般形式為:

do語句;while(表達式);其中,語句是循環(huán)體,表達式是循環(huán)條件。do-while語句的語義是:先執(zhí)行循環(huán)體語句一次,再判別表達式的值,若為真(非0)則繼續(xù)循環(huán),否則終止循環(huán)。

unsignedcharcounter;

………………

………………

……………… do { P1_1=!P1_1; delay(1000);/*延時*/

counter++;}while(counter<=8);上面程序的作用是:產生一個只有八個周期的方波。每次循環(huán)體執(zhí)行的時候就將P1_1口置為反狀態(tài),從而實現(xiàn)方波的輸出

for循環(huán)語句

for語句是C語言所提供的功能更強,使用更廣泛的一種循環(huán)語句。其一般形式為:

for(表達式1;表達式2;表達3)

表達式1:通常用來給循環(huán)變量賦初值,一般是賦值表達式。也允許在for語句外給循環(huán)變量賦初值,此時可以省略該表達式:

表達式2:通常是循環(huán)條件,一般為關系表達式或邏輯表達式;表達式3:通??捎脕硇薷难h(huán)變量的值,一般是賦值語句

用for語句計算s=1+2+3+...+99+100intn,s=0;for(n=1;n<=100;n++)s=s+n;可以等價為:intn=0,s=0;for(;n<=100;n++)s=s+n;還可以寫為intn=0,s=0;for(;n<=100;)

{ s=s+n;使用for語句的要點:l

for語句中的各表達式都可省略,但分號間隔符不能少。如:for(;表達式;表達式)省去了表達式1;for(表達式;;表達式)省去了表達式2;for(表達式;表達式;)省去了表達式3;for(;;)省去了全部表達式。在循環(huán)變量已賦初值時,可省去表達式1。如省去表達式2或表達式3則將造成無限循環(huán),這時應在循環(huán)體內設法結束循環(huán)。

goto循環(huán)語句

goto語句也稱為無條件轉移語句,其一般格式如下:goto語句標號;在結構化程序設計中一般不主張使用goto語句,以免造成程序流程的混亂,使理解和調試程序都產生困難。上面的例子中使用了一個goto尚可理解,但是如果在一個大型程序設計中使用大量的goto語句,將會使得整個程序變得非常亂,沒有一個清晰的條理和結構,最終都不知道goto到那里去了

所謂結構話程序就是整個程序的構成只有三種語句:l

順序語句;l

條件語句;l

循環(huán)語句。這三種語句能夠勝任所有的軟件開發(fā)流程。

break和continue語句

1)break語句break語句只能用在switch語句或循環(huán)語句中,其作用是跳出switch語句或跳出本層循環(huán),轉去執(zhí)行后面的程序。由于break語句的轉移方向是明確的,所以不需要語句標號與之配合。break語句的一般形式為:break;1)continue語句continue語句只能用在循環(huán)體中,其一般格式是:continue;其語義是:結束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語句之后的語句,轉入下一次循環(huán)條件的判斷與執(zhí)行。應注意的是:本語句只結束本層本次的循環(huán),并不跳出循環(huán)。

數組

數組在程序設計中,為了處理方便,把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數據元素的集合稱為數組。在C語言中,數組屬于構造數據類型。一個數組可以分解為多個數組元素,這些數組元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字符數組、指針數組和結構數組等各種類別。

數組說明的一般形式為:類型說明符

數組名[常量表達式],……;其中,類型說明符是任一種基本數據類型或構造數據類型。數組名是用戶定義的數組標識符。方括號中的常量表達式表示數據元素的個數,也稱為數組的長度。例如:inta[10];數組類型說明的需要注意:l

數組的類型實際上是指數組元素的取值類型。對于同一個數組,其所有元素的數據類型都是相同的。l

數組名的書寫規(guī)則應符合標識符的書寫規(guī)定。

數組名不能與其他變量名相同

數組元素的表示方法

通過制定數組元素的下標可以實現(xiàn)對數組元素的訪問。下標表示了元素在數組中的順序號。數組元素的一般形式為:數組名[下標]。其中的下標只能為整型常量或整型表達式。如為小數時,C編譯將自動取整

必須先定義數組,才能使用下標變量

3.1.1數組的賦初值初始化賦值的一般形式為:static類型說明符

數組名[常量表達式]={值,值……值};其中,static表示是靜態(tài)存儲類型,C語言規(guī)定只有靜態(tài)存儲數組和外部存儲數組才可作初始化賦值。

二維數組

二維數組類型說明的一般形式是:

類型說明符

數組名[常量表達式1][常量表達式2]…;其中,常量表達式1表示第一維下標的長度,常量表達式2表示第二維下標的長度

例如:

unsignedchara[3][4];字符數組

用來存放字符量的數組稱為字符數組。

字符數組類型說明的形式與前面介紹的數值數組相同。例如:charc[10];由于字符型和整型通用,也可以定義為intc[10]但這時每個數組元素占2個字節(jié)的內存單元。

函數

函數的分類函數的分類

從函數定義的角度看,函數可分為庫函數和用戶定義函數兩種

庫函數由C系統(tǒng)提供,用戶無須定義

用戶定義函數由用戶按需要寫的函數

函數的定義

1.無參函數的一般形式類型說明符

函數名(){類型說明

語句

}例如固定延時子程序:voiddelay_fix(void){ unsignedinta; for(a=0;a<2000;a++) { ;}}1.有參函數的一般形式

類型說明符

函數名(形式參數表)型式參數類型說明

{類型說明

語句

}例如可控的延時子程序:voiddelay(unsignedintb){ unsignedinta; for(a=0;a<b;a++) { ;}}函數的調用

函數調用的一般形式前面已經說過,在程序中是通過對函數的調用來執(zhí)行函數體的,其過程與其他語言的子程序調用相似。C語言中,函數調用的一般形式為:函數名(實際參數表)對無參函數調用時則無實際參數表,實際參數表中的參數可以是常數、變量或其他構造類型數據及表達式,各實參之間用逗號分隔。

例如函數:intmax(inta,intb){if(a>b)returna;elsereturnb;}上面的子程序為一個比較大小的子程序,有一個返回值

通過其他程序調用它的方法有:

函數表達式函數語句

函數實參

函數值

函數的值是指函數被調用之后,執(zhí)行函數體中的程序段所取得的并返回給主調函數的值。函數的值只能通過return語句返回主調函數。return語句的一般形式為:

return表達式;或者為:return(表達式);該語句的功能是計算表達式的值,并返回給主調函數。在函數中允許有多個return語句,但每次調用只能有一個return語句被執(zhí)行,

因此只能返回一個函數值

函數的遞歸調用

一個函數在它的函數體內調用它自身稱為遞歸調用,這種函數稱為遞歸函數

intf(intx){inty;z=f(y);returnz;}變量的作用域

C語言中的變量,按作用域范圍可分為兩種,

即局部變量和全局變量。

局部變量局部變量也稱為內部變量。局部變量是在函數內作定義說明的。其作用域僅限于函數內,離開該函數后再使用這種變量是非法的,因為內存已經釋放,訪問的話的到不一定是上次的數據。

全局變量全局變量也稱為外部變量,它是在函數外部定義的變量。它不屬于哪一個函數,它屬于一個源程序文件。其作用域是整個源程序。在函數中使用全局變量,一般應作全局變量說明。全局變量的說明符為extern,但在一個函數之前定義的全局變量,在該函數內使用可不再加以說明。

變量的存儲方式

在C語言中,對變量的存儲類型說明有以下四種:l

auto:自動變量l

register:寄存器變量l

extern:外部變量static:靜態(tài)變量

外部函數和內部函數

外部函數外部函數在整個源程序中都有效,其定義的一般形式為:extern類型說明符

函數名(形參表)例如:externintf(inta,intb)內部函數如果在一個源文件中定義的函數只能被本文件中的函數調用,而不能被同一源程序其他文件中的函數調用,則這種函數稱為內部函數。

一般形式是:static類型說明符函數名(形參表)指

指針的基本概念:在計算機中,所有的數據都是存放在存儲器中的。一般把存儲器中的一個字節(jié)稱為一個內存單元,不同的數據類型所占用的內存單元數不等,如整型量占2個單元,字符量占1個單元等,在第二章中已有詳細的介紹。為了正確地訪問這些內存單元,必須為每個內存單元編上號。根據一個內存單元的編號即可準確地找到該內存單元。內存單元的編號也叫做地址。既然根據內存單元的編號或地址就可以找到所需的內存單元,所以通常也把這個地址稱為指針

指針變量的類型說明對指針變量的類型說明包括三個內容:

指針類型說明,即定義變量為一個指 針變量;

指針變量名;變量值(指針)所指向的變量的數據類型

其一般形式為:類型說明符*變量名;

指針變量的賦值

指針變量同普通變量一樣,使用之前不僅要定義說明,而且必須賦予具體的值。未經賦值的指針變量不能使用,否則將造成系統(tǒng)混亂,因為它指向內存中不定的地址,可能造成很嚴重的后果。

&變量名

&a變示變量a的地址,&b表示變量b的地址。指針變量的運算

指針運算符包括取地址運算符和取內容運算符

取地址運算符&取地址運算符(&)是單目運算符,其結合性為自右至左,其功能是取變量的地址。例如:inta;int*p;p=&a;表示將a的地址賦給p。

取內容運算符*取內容運算符(*)是單目運算符,其結合性為自右至左,用來表示指針變量所指的變量。又如(接上面例子):*p=5;表示給a賦值5指針的運算包括

賦值運算

加減算術運算

數組指針變量的使用

一個數組是由連續(xù)的一塊內存單元組成的。數組名就是這塊連續(xù)內存單元的首地址

一個指針變量既可以指向一個數組,也可以指向一個數組元素,可把數組名或第一個元素的地址賦予它。如要使指針變量指向第i號元素可以把i元素的首地址賦予它或把數組名加i賦予它。

數組指針變量說明的一般形式為:類型說明符*指針變量名

其中,類型說明符表示所指數組的類型,從一般形式可以看出指向數組的指針變量和指向普通變量的指針變量的說明是相同的。引入指針變量后,就可以用兩種方法來訪問數組元素

第一種方法為下標法

a[i]第一種方法為下標法*(pa+i)指向多維數組的指針

C語言允許把一個二維數組分解為多個一維數組來處理。

a[3][4]數組a可分解為三個一維數組,即a[0]、a[1]、a[2]。每一個一維數組又含有四個元素。例如a[0]數組,含有a[0][0]、a[0][1]、a[0][2]、a[0][3]四個元素。

a[0]是第一個一維數組的數組名和首地址

&a[0][0]是二維數組a的0行0列元素首地址

a+I、a[i]、*(a+i)、&a[i][0]是等同的

把二維數組a分解為一維數組a[0],a[1],a[2]之后,設p為指向二維數組的指針變量。可定義為:int(*p)[4]它表示p是一個指針變量,它指向二維數組a或指向第一個一維數組a[0],其值等于a,a[0],或&a[0][0]等

可以這樣認為p+i是指向某一行的指針,叫做行指針,而*(p+i)+j則是指向某一行中某列的指針,稱之為列指針

結構體與聯(lián)合體

結構是一種構造類型,它是由若干“成員”組成的。每一個成員可以是一個基本數據類型或者又是一個構造類型。結構就是一種“構造”而成的數據類型,那么在說明和使用之前必須先定義它,也就是構造它,如同在說明和調用函數之前要先定義函數一樣。

結構體的定義

定義一個結構的一般形式為:

struct結構名

{成員表列

};成員表由若干個成員組成,每個成員都是該結構的一個組成部分。對每個成員也必須作類型說明,其形式為:類型說明符

成員名;結構體的賦值

通過“.”子符號來對結構變量賦值,例如:例如上例

stustudent1; student.num=32; [20]=”xiaowang”; student.sex=’m’; student.score=80;結構體的指針賦值

通過符號”->”可實現(xiàn)利用指針對結構體變量賦值。如上例:

stu*p=&student1; p->num=32; p->name[20]=”xiaowang”; p->sex=’m’; p->score=80;聯(lián)合體的定義

聯(lián)合”與“結構”有一些相似之處。但兩者有本質上的不同。在結構中各成員有各自的內存空間,一個結構變量的總長度是各成員長度之和。而在“聯(lián)合”中,各成員共享一段內存空間,一個聯(lián)合變量的長度等于各成員中最長的長度。定義一個聯(lián)合類型的一般形式為:

union聯(lián)合名

{成員表

};枚舉和位運算

枚舉的定義枚舉類型定義的一般形式為:enum枚舉名

{枚舉值表};在枚舉值表中應羅列出所有可用值。這些值也稱為枚舉元素。例如:

enumweekday{sun,mou,tue,wed,thu,fri,sat};位運算

位運算符C語言提供了六種位運算符:l

&:按位與l

|:按位或l

^:按位異或l

~

溫馨提示

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

評論

0/150

提交評論