




已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
-數(shù)據(jù)類型:1.簡單的數(shù)據(jù)類型: 整型 實型 字符型2.構(gòu)造型: 數(shù)組 結(jié)構(gòu)體(聯(lián)合體) 鏈表 int a,b,c;- 數(shù)組: 同種類型的數(shù)據(jù)在內(nèi)存中占有一片連續(xù)的存儲空間.-根據(jù)數(shù)組所帶有下標(biāo)的個數(shù):(1)一維數(shù)組 (2)二維數(shù)組(3)多維數(shù)組第一部分: 一維數(shù)組的定義、引用、賦值1.一維數(shù)組定義的一般形式: 類型名 數(shù)組名常量表達(dá)式;例如: int a8;int 類型名 說明該數(shù)組中的每個元素都是整型. a 是數(shù)組名,是用戶自定義,是一個地址常量. 8 說明該數(shù)組中含有8個元素,該八個元素分別為: a0a7 ,在該數(shù)組中,數(shù)組的下標(biāo)總是從0開始,就把下標(biāo)0叫做該數(shù)組下標(biāo)的下界.把下標(biāo)7叫做該數(shù)組下標(biāo)的上界 .當(dāng)定義數(shù)組的時候,編譯系統(tǒng)將根據(jù)定義的類型在內(nèi)存中為該數(shù)組分配一定大小的存儲空間.定義多個數(shù)組:double a8,b100,w200; 和其他變量一起定義:float a,b10,*p;2. 一維數(shù)組的引用的一般形式: 數(shù)組名常量表達(dá)式例如: int a8,i; (i=0&i 數(shù)組中的每個元素的實質(zhì):代表了一個存儲單元,和變量的形式一樣. - int a8,i,k; a8-對數(shù)組元素的引用不能超出規(guī)定的范圍,如果超出范圍,編譯系統(tǒng)不會給出出錯信息.不一定得到預(yù)期結(jié)果.3.在定義的同時為數(shù)組的賦值:*完全賦值:例如: int a8=1,2,3,4,5,6,7,8;-數(shù)據(jù)間用逗號進(jìn)行分隔.-最后一個元素的后面是沒有逗號的。-賦值的個數(shù)不能超出規(guī)定的個數(shù).-賦值的元素的類型也要和說明的類型要一致.-當(dāng)賦值后,編譯系統(tǒng)將自動的把: a0=1 . a7=8 * 不完全賦值:-針對數(shù)值型數(shù)據(jù):不足部分用0或0.0int a8=2,3,8;int a8=2,3,8,0,0,0,0,0;double b5=1.2,3.4;double b5=1.2,3.4,0.0,0.0,0.0;針對字符型:不足補(bǔ)充0例如: char ch5=A,B,C; char ch5=A,B,C,0,0;* 通過完全賦值來確定一維的大小:int a =1,2,3,4,5,6;int a6=1,2,3,4,5,6;int a =0,0,0,0,0,0,0,0;int a8=0; 說明在一維數(shù)組中一維的大小可以省略. 在執(zhí)行過程中不能給數(shù)組進(jìn)行整體賦值,因為數(shù)組名是一個地址常量不能代表整體.4.如何瀏覽數(shù)組中的元素: -可以通過 一個for 來實現(xiàn):例如: int a8,i;for(i=0;i8;i+) ai 例如:編寫一個函數(shù),給一個含有30個元素的數(shù)組賦1,3,5,7.先按每行10個順序輸出,再按每行10個逆序輸出.#include #define M 30 void main() int aM,i; for(i=0;iM;i+) ai=2*i+1; for(i=0;i=0;i-) printf(%4d,ai); if(i%10=0) printf(n); 第二部分:一維數(shù)組和指針 變量的地址:把該變量在內(nèi)存中所占空間的第一個字節(jié)的地址就叫做該變量的地址. 數(shù)組的地址:把該數(shù)組中第一個元素的地址就叫做該數(shù)組的首地址. 假設(shè) : int a8,*p; &a0-/代表了數(shù)組的首地址. - 當(dāng)定義一個數(shù)組的時候,這時數(shù)組名就確定了。該數(shù)組名就是一個地址常量,代表了該數(shù)組第一個元素的地址值. 數(shù)組名a 和 &a0 數(shù)組名是一個地址常量就不能給其進(jìn)行賦值運(yùn)算.例如: a+ ;-數(shù)組名是常量,是不可以改變,如何通過數(shù)組名來訪問某個元素的地址:* 可以通過加減一個整數(shù)的形式來訪問某個 元素的 地址: 例如: int a8,i; (i=0&i 看看對一維數(shù)組的幾中引用形式:例如: int a8,*p=a,i; (i=0&i 如果: p=a;3. 帶下標(biāo)的指針: pi4.用指針的形式: *(p+i)第三部分:一維數(shù)組和函數(shù)1. 數(shù)組中的元素作為實參進(jìn)行傳遞.-由于數(shù)組中的每個元素的實質(zhì)都相當(dāng)于一個變量,因此數(shù)組元素的傳遞實質(zhì)上就是變量的值傳遞. 例如:#include int fun(int x,int y,int z)int s; s=x+y+z; return s;void main()int a3=1,2,3,s; s=fun(a0,a1,a2); printf(s=%dn,s);2. 數(shù)組名作為實參,對應(yīng)的形參為: (1)*a (2)a (3)aM數(shù)組名的傳遞實質(zhì)上是元素的地址傳遞.例如1:#include #define M 8void fun(int *p)/fun(int p)/fun(int pM)int i; for(i=0;iM;i+) *(p+i)=2*i+1;void main() int aM,i; fun(a); for(i=0;iM;i+) printf(%4d,ai); printf(n);例如2:#include #define M 8void fun(char *a,int n) int i; for(i=0;in;i+) ai=*;void main() char sM=A,B,C,D,E,F,G,H; int i; for(i=0;iM;i+) printf(%3c,si); printf(n); fun(s,4); for(i=0;iM;i+) printf(%3c,si); printf(n); 3.數(shù)組元素的地址作為實參進(jìn)行傳遞#include #define M 8void fun(char *a,int n) int i; for(i=0;in;i+) ai=*;void main() char sM=A,B,C,D,E,F,G,H; int i; for(i=0;iM;i+) printf(%3c,si); printf(n); fun(&s2,4); for(i=0;iM;i+) printf(%3c,si); printf(n); 第四部分:一維數(shù)組的簡單應(yīng)用 編寫函數(shù):1.定義一個含有15個元素的數(shù)組,通過隨機(jī)函數(shù)給其賦隨機(jī)值0100,然后輸出 2.然后在按每3個為一組求他們的和值,再在主函數(shù)中輸出他們的和值.例如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15b0 b1 b2 b3 b4#include #include #define M 15#define N 3int fun(int *a,int *b)int i,s=0,k=0; for(i=0;iM;i+) s+=ai; if(i+1)%N=0) bk+=s;s=0; return k;void main()int aM,bM,i,n; /以下語句用來給數(shù)組賦值: for(i=0;iM;i+) ai=rand()%100; for(i=0;iM;i+) printf(%4d,ai); printf(nn); n=fun(a,b); for(i=0;in;i+) printf(%4d,bi); printf(n);例如2:編寫函數(shù)通過隨機(jī)函數(shù)給一個含有8個元素的數(shù)組賦值,然后輸出該數(shù)組中的值,最后在把該數(shù)組中元素的值按升序進(jìn)行排列再輸出.(排序問題(冒泡法)5 7 4 8 9 1 2 00 7 5 8 9 4 2 1 第一位置為基點:0 1 7 8 9 5 4 2 第二位置為基點:0 1 2 8 9 7 5 4 第三位置為基點:0 1 2 4 9 8 7 5 第四位置為基點:0 1 2 4 5 9 8 7 第五位置為基點: 0 1 2 4 5 7 9 8 第六位置為基點: 0 1 2 4 5 7 8 9 第七位置為基點: #include #include #define M 8void fun(int *a) int i,t; for(i=0;iM-1;i+) for(j=i+1;jaj)t=ai;ai=aj;aj=t;void main()int aM,i; for(i=0;iM;i+) ai=rand()%50; for(i=0;iM;i+) printf(%4d,ai); printf(n); fun(a); for(i=0;iM;i+) printf(%4d,ai); printf(n);例如3:編寫程序:把一個數(shù)組中的數(shù)據(jù)進(jìn)行倒置,然后輸出. 1 2 3 4 5 6 6 5 4 3 2 1#include #define M 8void fun(int *a) int i,t; for(i=0;iM/2;i+) t=ai; ai=aM-1-i; aM-1-i=t; void main()int aM,i; for(i=0;iM;i+) ai=3*i+2; for(i=0;iM;i+) printf(%4d,ai); printf(n); fun(a); for(i=0;i 一維的大?。罕硎居袔仔?。(行下標(biāo)) 二維的大?。罕硎居袔琢?(列下標(biāo))-元素的個數(shù)=行列下標(biāo)成積-當(dāng)定義數(shù)組的時候,編譯系統(tǒng)將根據(jù)定義的類型在內(nèi)存中為其開辟一定大小的存儲空間。-定義的形式如圖:對應(yīng)的數(shù)組元素分別為: a00 a01.a13-定義多個二維數(shù)組float a24,b36;-和其他類型的變量一起定義:double a,b10,w36,*p;2.二維數(shù)組的引用的一般形式: 數(shù)組名常量表達(dá)式1常量表達(dá)式2;例如:int a36,i,j;(i=0&i=0&j賦值的個數(shù)不能多于規(guī)定的個數(shù)。-所賦值的個數(shù)類型都要和規(guī)定的一一對應(yīng)。-計算機(jī)的編譯系統(tǒng)將自動把:a00=1.a03=4.a13=8* 線性賦值:例如: int a24=1,2,3,4,5,6,7,8;- 不完全賦值:-缺省列:例如1:int a24=1,2,3 , 5,8 ;- int a24=1,2,3,5,8;-缺省行例如1: int a34=1,2,3,4, 5,6,7,8 ;-缺省行列:例如1: int a34=1,2,3 , 5,8 ;*通過完全賦值來確定一維大?。豪?int a 4=5,4,4,5,4,5,2,4,5,1,5,4;- 一維的大小=元素的個數(shù)/列數(shù)* 如果整除就把商作為一維的大小* 如果不能整除就商+1作為一維的大小-說明在二維數(shù)組中,一維的大小可以省略,但二維的大小是不能省略的。4.二維數(shù)組的瀏覽:是通過兩個for語句來實現(xiàn);例如:for(i=0;iM;i+) for(j=0;jN;j+) aij例如:編寫函數(shù),給一個含有2*3的二維數(shù)組賦值 1,2,3,10,20,30然后按行進(jìn)行輸出。#include void main() int i,j,a23; for(i=0;i2;i+) for(j=0;j3;j+) scanf(%d,&aij);/按行進(jìn)行輸出 for(i=0;i2;i+) for(j=0;j &a00 3.看看二維數(shù)組對元素的幾種引用形式: int a36,i,j;(i=0&i=0&j 二維數(shù)組以行為單位可以把二維數(shù)組看出幾個一維數(shù)組,那么 ai-就可以看成是某行的首地址。 由于 bj- *(b+j)2) aij - *(ai+j) - 在一維數(shù)組中 ai-*(a+i) 因此 aij- (*(a+i)j3) aij - (*(a+i)j- 由2和3組合:4) *(ai+j) - *(*(a+i)+j)5) *(&a00 +列數(shù)*行下標(biāo)+列下標(biāo))-4.指針數(shù)組:-指針數(shù)組的定義形式:類型名 *指針數(shù)組名常量表達(dá)式;例如: int *p3;-如何通過指針數(shù)組來引用二維數(shù)組中的元素。例如:int a32,*p3,i; for(i=0;i使指針數(shù)組中的每個元素都指向其對應(yīng)二維數(shù)組的對應(yīng)行。-指針數(shù)組中的每個元素每移動一次相當(dāng)于移動一個存儲單元。-二維數(shù)組的行下標(biāo)和指針數(shù)組中的下標(biāo)的值要一致。-通過指針數(shù)組來引用二維數(shù)組元素的幾種形式:aij -pij*(ai+j) -*(pi+j) pi-*(p+i)pij -(*(p+i)j*(pi+j) -*(*(p+i)+j)5.行指針 - 行指針的一般定義形式:類型名 (*指針變量)常量表達(dá)式;例如1: int (*q)2;-如讓行指針指向一個二維數(shù)組:例如:int a32,(*q)2; q=a;/-要想保證行指針指向一個二維數(shù)組必須使行指針的下標(biāo)表達(dá)式和二維數(shù)組中列下標(biāo)的表達(dá)式一致。-如圖所示:-行指針每移動一次就移動一行。 q+-看如何通過行指針來引用二維數(shù)組中的元素: aij- qij *(ai+j)- *(qi+j) (*(a+i)j -(*(q+i)j *(*(a+i)+j) - *(*(q+i)+j)-看看課本:9.129.14第三部分:二維數(shù)組和函數(shù)1.二維數(shù)組名作實參1)當(dāng)實參為二維數(shù)組名時,形參必為指針,并且這個指針應(yīng)指向數(shù)組,指向二維數(shù)組的指針變量為行指針。形參對應(yīng)格式,即行指針應(yīng)為:(*a)N2)行指針也可以表示成 aMN3)行的表達(dá)式可以缺省 a N2.指針數(shù)組做實參1.由于指針數(shù)組中每個元素均為指針,因此對應(yīng)形參應(yīng)當(dāng)是指向指針的指針 *a2.與指針數(shù)組表示方式相同*aM3.缺省 *a 例如1:1.編寫程序通過調(diào)用隨機(jī)函數(shù)給5*6的二維數(shù)組元素賦040的整數(shù),求出二維數(shù)組每行元素的平均值。#include #include #define M 5#define N 6void fun(int (*a)N,int *b)int i,j,av; for(i=0;iM;i+) av=0; for(j=0;jN;j+) av+=aij; bi=av/N; void main()int aMN,i,j,bM; /調(diào)用隨機(jī)函數(shù)給M*N的數(shù)組賦值: for(i=0;iM;i+) for(j=0;jN;j+) aij=rand()%40;/以行為單位輸出二維數(shù)組中元素的值: for(i=0;iM;i+) for(j=0;jN;j+) printf(%-4d,aij); printf(n); fun(a,b); for(i=0;i在C語言中,字符串沒有變量只有常量。-在C語言中,沒有定義一種字符串類型。字符串的存取是依托于一維的字符型數(shù)組來實現(xiàn)的。 例如:char s6=ABCDE;-用一維的字符型數(shù)組和字符串的區(qū)分:例如:char s5=A,B,C,D,E char s5=A,B,C,D* 如果要把一個字符型數(shù)組看成字符串,要求最后一個元素必須為0,而字符型數(shù)組對最后一個元素是沒有要求的。1.在定義的同時給一維的字符型數(shù)組賦字符串例如:char s10=A,B,C,D;char s10=ABCD; char s10=ABCD;* 在給字符型數(shù)組賦字符串的時候,一定要有足夠大的空間。通過完全賦值來確定一維的大?。篶har s =ABCD;*如果要在執(zhí)行部分給字符型數(shù)組賦字符串:不能整體賦值,只能逐個賦值。例如: char s100; s=ABCD;/是錯誤的。 s0=A;s1=B,s2=C,s3=D;最后在人為的給其后天就一個結(jié)束標(biāo)志: s4=0;2.讓一個字符型指針指向某個字符串:* 在定義的同時讓指針指向字符串。例如: char *p=ABCD;* 在執(zhí)行部分讓指針指向某個字符串:例如: char str100,*p=str; p=ABCD;3.把字符串賦值給數(shù)組和指針的區(qū)分: -如果把字符串賦值給字符型數(shù)組,那么該數(shù)組就會根據(jù)字符串的大小在內(nèi)存中為其開辟對應(yīng)大小的存儲空間。而把字符串賦值給字符型指針,只表示該指針指向某個字符串并沒有在內(nèi)存中為其開辟空間。第二部分:字符串的輸入和輸出1.調(diào)用標(biāo)準(zhǔn)庫中printf和scanf函數(shù)-printf函數(shù):1輸出字符串的必要條件:(1)可是數(shù)組名(2)可以是指向字符串的指針(3)還可以是字符串的本身。2在C中用格式字符%s來實現(xiàn)字符串的整體輸出。3輸出直到遇到第一個0結(jié)束輸出。例如:#include void main()char str100=ABCD0abcd,*p=&str2; printf(str=%sn,str); printf(str=%sn,p); printf(str=%sn,ABCD0abcd );- scanf 函數(shù)1輸入的必要條件:(1)可以是數(shù)組名(2)可以是指向字符串的指針。2C中用格式字符%s來實現(xiàn)字符串整體輸入。例如:#include void main()char str100=*,*p=&str2; scanf(%s,p);/scanf(%s,str); printf(str=%sn,str); 3如何進(jìn)行輸入: *當(dāng)格式字符間是連續(xù)的:#include void main()char str100,str1100,str2100; scanf(%s%s%s,str,str1,str2); printf(str=%s, str1=%s,str2=%sn,str,str1,str2); 輸入的字符串之間要有必要的分隔符。分隔符為(空格、tab、 回車) 用scanf進(jìn)行輸入的時候,空格,tab,回車都不作為字符來處理。2.調(diào)用標(biāo)準(zhǔn)庫中字符串專用 gets和puts函數(shù)1gets函數(shù)的一般調(diào)用形式: gets(參數(shù)); 例如:#include void main()char s100,s1100; gets(s); gets(s1); printf(s=%s,s1=%sn,s,s1);在輸入的時候,分隔符只能用回車,這時,tab、和空格都將作為字符來處理。2puts函數(shù)的一般調(diào)用形式: puts(參數(shù));在輸出的時候,自動添加一個換行。例如:#include void main()char s100; gets(s); puts(s);第三部分:字符串?dāng)?shù)組 zhangsan lisi wangwu s010 s110 s210-在C語言中字符串?dāng)?shù)組的存放是通過二維的字符型數(shù)組來實現(xiàn)的 。1.在定義的同時為二維字符型數(shù)組賦字符串?dāng)?shù)組例如:char str310=zhangsan, lisi, wangwu ; -在二維的字符型數(shù)組中,一維的大小表示該字符串?dāng)?shù)組中含有字符串的個數(shù)。二維的大小表示每個字符串的最大長度。2.用指針數(shù)組來存放字符串?dāng)?shù)組。char *p=zhangsan,*q=lisi,*s=wangwu;可以定義一個字符型指針數(shù)組來存放字符串:例如:char *p3=zhangsan,lisi,wangwu;3.字符串?dāng)?shù)組的賦值:例如:#include void main()int i; char str530; for(i=0;i5;i+) gets(stri); for(i=0;i5;i+) puts(stri);-4.字符串?dāng)?shù)組的排序:按字符串的長度排序:#include #include #define M 5void fun(char s 50)int i,j; char t50; for(i=0;iM-1;i+) for(j=i+1;jstrlen(sj) strcpy(t,si); strcpy(si,sj); strcpy(sj,t); void main()char sM50; int i; for(i=0;iM;i+) gets(si); for(i=0;iM;i+) puts(si); fun(s); for(i=0;iM;i+) puts(si); -按字符串的大小排序:#include #include #define M 5void fun(char s 50)int i,j; char t50; for(i=0;iM-1;i+) for(j=i+1;jM;j+) if(strcmp(si,sj)0) strcpy(t,si); strcpy(si,sj); strcpy(sj,t); void main() char sM50; int i; for(i=0;iM;i+) gets(si); printf(-n); for(i=0;iM;i+) puts(si); fun(s); printf(-n); for(i=0;i對應(yīng)的頭文件 #include 1.拷貝函數(shù) strcpy 一般調(diào)用形式: strcpy(s1,s2);使用:例如#include #include void main() char s1100=abcd,s2100=ABCDE; puts(s1);puts(s2); strcpy(s1,s2); puts(s1);puts(s2); -推導(dǎo):#include void main()char s1100=abcd,s2100=ABC; int i; puts(s1);puts(s2); for(i=0;s2i;i+) s1i=s2i; s1i=0; puts(s1);puts(s2);2.連接函數(shù) strcat - 一般調(diào)用形式: strcat(s1,s2); - 使用#include #include void main() char s1100=abcd,s2100=ABCDE; puts(s1);puts(s2); strcat(s1,s2); puts(s1);puts(s2); - 推導(dǎo):#include void main()char s1100=abcd,s2100=ABCDE; int i,j; puts(s1);puts(s2); for(i=0;s1i;i+) ; for(j=0;s2j;j+) s1i+=s2j; s1i=0; puts(s1);puts(s2);3.長度函數(shù) strlen; sizeof;一般形式為:strlen(s); sizeof(s); 使用:#include #include void main()char s1000; int k,K; gets(s); k=strlen(s); K=sizeof(s); printf(k=%d,K=%dn,k,K);4.比較函數(shù): strcmp一般調(diào)用形式 strcmp(s1,s2); 使用:#include #include void main()char s1100,s2100 ; gets(s1);gets(s2); if(strcmp(s1,s2)0) puts(s1); else if(strcmp(s1,s2)=0) printf(相等n); else puts(s2);- 推導(dǎo):#include int fun(char *s1,char *s2)int i; for(i=0;s1i!=0&s1i=s2i; i+) ; return s1i-s2i;void main()char s1100,s2100; gets(s1);gets(s2); if(fun(s1,s2)0) puts(s1); else if(fun(s1,s2)=0) printf(相等!n); else puts(s2);第五部分:字符串的簡單應(yīng)用:1.編寫函數(shù):判斷一個字符串是否為回文,如果是回文,函數(shù)返回1,否則函數(shù)返回0。123321 abcba#include #include int fun(char *s)int i,k; k=strlen(s); for(i=0;iC語言是一種函數(shù)式的語言,在C中提供了函數(shù)的思想,在程序中沒有子程序的概念只有函數(shù)的思想,因此,C語言的基本單位是函數(shù)。在一個C程序中,可以有多個函數(shù)構(gòu)成,但主函數(shù)只能有一個且唯一。C語言中規(guī)定用main來作為主函數(shù)來使用,在main函數(shù)的后面有一個小括號,該括號中可以有參數(shù),也可以沒有參數(shù),無論有無參數(shù)該括號都不能省略。C程序總是主函數(shù)的左邊花括號開始執(zhí)行,到右邊的花括號結(jié)束。第一部分:帶參數(shù)的主函數(shù) -帶參數(shù)的主函數(shù)的一般形式:void main(類型名1 形參1,類型名2 形參2).例如1:void main(int argc,char *argv).-還可以寫成:void main(int argc,char *argv).-如果主函數(shù)帶有參數(shù),那么第一個參數(shù)的類型必須為int,第二個參數(shù)必須為char 。而形參是用戶標(biāo)識符。-如果第一個參數(shù)有值,那么該值至少為1例如:#include void main(int argc,char *argv)int i; printf(%dn,argc); for(i=1;i 遞歸分類:(1)簡單遞歸 (2)復(fù)雜遞歸* 構(gòu)成遞歸的必要條件:I要解決的問題可以轉(zhuǎn)換為一個新的問題,新問題的解題方法和原來一樣。II通過轉(zhuǎn)換可以使問題得以解決。III必須有一個明確的結(jié)束條件。例如1:s=n!;#include int fun(int n)if(n=1) return 1; else return n*fun(n-1);void main()int n,s; printf(請輸入n的值: ); scanf(%d,&n); s=fun(n); printf(s=%dn,s);例如2:s=1+2+3+.n#include int fun(int n)if(n=1) return 1; else return n+fun(n-1);void main()int n,s; printf(請輸入n的值: ); scanf(%d,&n); s=fun(n); printf(s=%dn,s);例如3:(11.14)1 1 2 3 5 8 13 21 34 55 89 .#include int fun(int n)if(n=0|n=1) return 1; else return fun(n-1)+fun(n-2);void main()int n,k; printf(請輸入n的值:); scanf(%d,&n); k=fun(n); printf(%d-%d,n,k);例如4:用遞歸算法根據(jù)下列公式求某數(shù)a的平方根:迭代公式為: x=(x0+a/x0)/2#include #include double fun(double a,double x0)double x; x=(x0+a/x0)/2; if(fabs(x-x0)=1e-6) return fun(a,x); return x;void main()double a; printf(請輸入 a的值:); scanf(%lf,&a); printf(%f- %fn,a,fun(a,1.0);例如5:#include void fun(int n,int *s)int f1,f2; if(n=1|n=2) *s=1; else fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2; n=1 x=1n=2 x=1n=3 x=2n=4 x=3n=5 x=5n=6 x=8n=7 x=13.void main() int x; fun(4,&x); printf(x=%dn,x);第三部分:用戶標(biāo)識符及作用域定義的概念:定義的實質(zhì)就在內(nèi)存中開辟空間的過程。聲明:介紹變量的所具有的性質(zhì)和功能。* 按變量活動的范圍:1 局部變量: 定義:定義在函數(shù)體內(nèi)部或定義在復(fù)合語句體內(nèi)的變量 例如:#inlcude void fun(int x,int y)int c; c=x+y; printf(c=%dn,c);void main()int a=10,b=20; a=a+5; int c=200; c=a+b; printf(c=%dn,c); fun(a,b);printf(a=%d,b=%dn,a,b);- 所有的形式參數(shù)都是局部變量。2 全局變量:外部變量- 定義在函數(shù)體外的變量#include int a=10;void fun()printf(a=%dn,a);int b=20;void main()printf(a=%d,b=%dn,a,b);3當(dāng)全局變量和局部變量同名:例如1:#include int a=100;void fun()int b=20; printf(a=%d,b=%dn,a,b);int b=200;void main()int a=10; printf(a=%d,b=%dn,a,b); fun();例如2:#include void main()int i=1,j=3; printf(%d,i+); int i=0; i+=j*2; printf(%d,%d,i,j); printf(%d,%dn,i,j);1,6,3,2,3*按變量存儲的性質(zhì):1自動類定義:被說明為auto或沒有被說明的變量 自動類的變量在內(nèi)存中占有一個臨時空 所有的形參都是自動類。2靜態(tài)類 定義: 在內(nèi)存中占有一個永久的存儲空間 所有的全局變量都是靜態(tài)類的。3對應(yīng)的說明符: 自動類:I:自動類: auto auto int a; II:寄存器類型 (register) -不能大量定義 - 不能求地址運(yùn)算。 - 靜態(tài)類:I : 靜態(tài)類 static static int a;II :外部類 extern 4靜態(tài)的局部變量:- 靜態(tài)的局部變量的值是在定義的時候賦予的。如果在定義的時候,沒有賦值,編譯系統(tǒng)將默認(rèn)為0- 靜態(tài)的局部變量在內(nèi)存中占有一個永久的存儲空間。 例如1#include void main()static int a; printf(a=%dn,a);例如2:#include int fun(int a,int b)static int i,m=2; i+=m; m+=i+a+b; return m;vo
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 事業(yè)單位改制正式合作協(xié)議
- 資本投資合作合同
- 無人機(jī)制造項目研發(fā)合同
- 保安服務(wù)合同終止協(xié)議書
- 木工單包工勞務(wù)合同書
- 環(huán)保節(jié)能設(shè)備制造合同
- 房屋出售居間合同
- 裝修工程人工勞務(wù)合同
- 工業(yè)互聯(lián)網(wǎng)平臺運(yùn)營合作協(xié)議
- 房屋中介服務(wù)合同
- 研發(fā)運(yùn)營一體化DevOps能力成熟度模型評估(完整版)
- 《國際貿(mào)易實務(wù)》課件
- 班級管理課件:班級組織的建設(shè)
- 《3-6歲兒童學(xué)習(xí)與發(fā)展指南》健康領(lǐng)域內(nèi)容目標(biāo)與指導(dǎo)
- 《共圓中國夢》示范課教學(xué)設(shè)計【部編人教版九年級道德與法治上冊】
- GB/T 10739-2023紙、紙板和紙漿試樣處理和試驗的標(biāo)準(zhǔn)大氣條件
- 《云臺山地質(zhì)公園》課件
- 《更年期中醫(yī)調(diào)》課件
- 環(huán)保行業(yè)研究報告
- 彈藥安全管理知識講座
- 公立醫(yī)院績效考核微創(chuàng)手術(shù)目錄(第2版)
評論
0/150
提交評論