

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一章語言及程序設計概述本章要求:C語言的特點、C語言與其它高級語言相比有什么異同;CPC機上的建立、編譯和運行過程;C重點:CCPC難點:無一、CC.C具有高級語言的特點,又有低級語言(匯編語言)的特點。CATTDennis在1972CB語言的基礎上發展起來的.(ALGOL60)CUNIXUNIX 、Word、PCDOSC1983年:制定的新標準,稱為(美國國家標準化協會)ANSI C1987 1988 1.5(圖形和文本窗口)1989年:Turbo C2。0 (DOS操作系統、查錯、Tinycom1991年:-Turbo C+(3.0) 說明:Turbo C語言可以在程序的任何地方嵌入匯編
2、代碼,提高速度,可以直接使用存儲器二CC32個關鍵字,9C345語法限制不太嚴格,程序設計自由度大.(放寬了語法檢查)例:1)對數組下標越界不作檢查,由程序編寫者自己保證程序的正確;18用CCC三C )/主函數/定義變量*/a,b,sum;a=123;b=456;sum=a+b;printf(“sum dn,sum); /輸出變量/main() C3)程序體必須在 5)用/*。.2四、C1演示 語言是一種編譯語言,編譯語言的特點:編源 程序執 行 程序CLink下CDOSC語言軟件為:TurboC C C 2.0 = + 程序=算法+數據結構+程序設計方法+語言工具和環境 即:12345100
3、12S(結果)S3S(結果)S4S(結果)S100 即:1+2+3+4+5+100 S(結果) S(結果) S(結果) S(結果) 5,2,4,12,935 24 成立:129 例2。2 例2。3 例2。4 例2。5 課余自學(必須)PAD圖 表示方法:P19 例 fft語句1語句24語 句語 句當型(2)NS直到型特點:去掉了帶箭頭的流程線,全部算法寫在一個矩形框內.稱N-SABA當P1ABA作業:p37 2。4上機:熟悉C 5 CC重點:CC在C(C 說明:在程序中對用到的所有數據都必須指定其數據類型.習慣上,符號常量(別名)名用大寫,變量用小寫。符號常量的定義為: P 45。5 2)在C
4、Ca存儲地址)200036 123,11,0 0123,011非0開頭0 說明:在一個整常量后面加一個字母:l或L,是長整型常量。22L x -3276832767 x 字節) 3276832767 x -2,147,483,6482,147,483,647 x 065535 x(2 x 字節) 04,294,967,295 如:9為 x=13; ; 見P44 圖3。5 例3。2、3.31)實型常量: 1。23e3,1。00e3P46表3.22)實型變量: x字節)3.4x10 -3838TC x說明:實型常量字節)1.7x10 1.7x10-308308float和C64f或F32位:324
5、。567f例:x=1。23; P47例1)字符常量: b)轉義字符(由“專用字母” )書P48表3。3 例3.5txdd0dddn2)字符變量: cASCII(1c(字符變量)書表 p50例3.6-7c=B c66故:字符數據可以進行算術運算;即:c=B+2 為68 書P50 0255127(0 x7f) TC128(0 x80) 負數:最高位為1,其余各位為原碼的反碼(原碼的相應位取反),然后對整個數加1。7140(0 x8c) 11001111+1(取反加1)111101000 x74 +1(取反加1) (0 x80為負數741) “a”,“ABFD” =“a0” 說明:C以便系統判斷字符
6、串是否結束.1)整型、字符型、單精度型、雙精度型數據-可以混合運算 高 低 char,short 10+a+1。58765。1234*b10+97+1。5-8765.1234*98 (TC6CCCC1)從左到右的結合運算順序;即:a=5+x10;運算對象與左邊運算符結合2)從右到左的結合運算順序;即:x=y=7;運算對象與右邊運算符結合C書P55C7 正號“+”2)雙目運算符:+、 、*、/、%(模運算,求余運算,兩側為整數)同。即:-5%3 值為-2、-5%3 值為2、 5%3 2作用:使變量的值增11+i(i)在使用ii1(減i.i+(i)-先使用i的值,然后再使i加 =4;i 5;i 5
7、,j4 、 (a+b)+ 8例main() z,x,y;z=(i+)+(i+)+(i+)9 i值為6z=x+y;x右結合運算符+printf(z=d,x=%d,y=d,z,x,y);輸出結果:z=6 輸出結果:z=0 x先為-4,然后+y,最后x+-x+y;3賦值運算符和賦值表達式(優先級低于算術,右結合) 注意:如果賦值運算符兩側的類型不一致,在賦值時,要進行類型轉換例 f ;f“+=、-=、*=、/=、=” x=y+8 x=x*(y+8) m=3 m=m3C為了簡化程序,使程序精練;提高編譯效率。 2)賦值表達式即:a=(b=5) 或 (運算順序的結合方向從右到左);a=5+(c=6) a
8、=11 aa;9 2)a= 3)a+=-6 a為:-12 結果值為:-12格式:表達式2 3+5,69;3+5,69;542a=25,a*3; a值為10 結果值為:30 (先求:a=2*5,后求:a*3)x=(a=2*5,a*3),a+4a值為10 x值為30 結果值為:149使用逗號表達式的目的,只是為了得到各個表達式的值(常用于循環語句)12 (int)x; (int)x+yCP56例f)(1)6 = (優先級低) = 表5.1&| (或)!(非) (ab) |(a=4)(b=8)1 | 11 |求值短路:53&2|84-!01|1) 0) 如:a&b&c ac? 相當于:ab?c?a:
9、c):(bc?(求最大值,如a=2, 結果為:8) = (a+) x=4,y=7 x=4,y=7 x的值5 y的值9x的值4 y的值9 a=7,x=2。5,y=4。7 s2。500000a%3*(int)(x+y)2 = 1(整型) /4(整型) =0(整型)a5a+b如:a=7, a的值8 b的值6 11|1如:a=15, a的值16 b的值16 0 如:a=15, a的值16 b的值15 0 如:a=15, a的值16 b的值14 1 0|1 例3。1 例3。2 例3.6 例3。3 例3.7 例3。5 3。8 3。12 例 例3。2 3。8 3。10 例 例3。711第四章 簡單的C程序設
10、計(順序程序設計) 2、字符數據的輸入/輸出;和scanf其它格式控制符只作了解)1賦值語句;printf和scanf及其格式控制符%c、f、d等的意義.無n P67 條件:if 循環:for()循環:while()循環:do 循環結束:continueswitch:break多分支:switch轉向:gotoprintf(“a=%d,a); 4、空語句:一個“;”12x=3; print(“x=x”,x)變量名=表達式a=b; ( max=x) ;三基本輸入/輸出語句C即:printf I/O函數庫(放在“stdio。h”中)(2)如果要使用C stdio。h 格式:printf(格式控制,
11、輸出表列)格式控制: printf書P77 表41 , y,z)d,i 例33ucsf 6說明:1)printf(“ ”,y) -4dl 即:printf( ”, i,y)h ”,a)m n小數(實數) 格式:putchar(變量)putchar(x) ) - scanf書P80 表 13 功能:求變量的地址(只能用于變量) x “d, &a,b) ( “4d3df, );輸入:12345678.93 時 得,2)帶分隔字符的方式(分隔字符:空格、tab、回車、逗號) a, ) 格式:getchar () ()123P83 14第五章 選擇結構程序設計1、關系、邏輯運算符、邏輯真/假;IF語句
12、。(了解)重點:1、關系、邏輯運算符、邏輯真/假;2、關系表達式、邏輯表達式;IF分支語句.1、邏輯真/假;2、關系、邏輯運算優先級.在程序設計中,表示一些復雜的條件3、條件運算符(第三章)二分支語句(書P91) f。ft句語句2 if語句1)if (表達式) ) (,x); 注意“;”位置語句1語句22) (表達式) ) ( ,x(,y);注意分號“;”語句1 (表達式1)15語句2語句3 2) (表達式3)語句n (表達式n)語句n+1例:p92圖5。6(2)if()和else 例5.1、5.2 例5.3 if if例: ( ) (ab)?a : 例5.4 if 語句(了解)switch1
13、語句2語句3 4 (表達式)n n 11; 2 2;break; 3 3;break; n n;break;例:四級(ABCD)轉化成百分制#include main():語句n+1;char scanf(”c”,grade);switch(grade)case A:printf(”85100n);break;16case B:printf(”7584n);break;case C:printf(”6074n”);break;case D:printf(”60n”);break;default:printf(”errorn”);例:百分制成績轉化成五級(ABCDE)五級記分 54-1例5.7
14、運費計算(自學) 例 求一元二次方程根(自學) 例 例5。2、P100 例5。5,P101 例5.6 5。5、5.6、5。9 17第六章 循環結構程序設計知識點:1、循環的概念及其算法描述; 2、goto4、dowhile循環;重點7、break、continue循環;重點 8、各種循環結構中的執行循環體、判斷循環條件的順序;重點9、各種循環結構在一定條件下的轉化。重點 語言在實現循環過程-可使用以下語句: 用goto if 用b)用whiled)用for當型直到型gotoif(1)goto 例:goto next; (2)goto 和if502nmain()i i , ; ;loop:(i=
15、50); ; ;18 (“%dn,) ;-實現“當型格式:while ( ) 502nmain( )i i , ; ; ) sum=sum+2i ; ; (“dn”, );說明: 表達式 (502nmain( )i i , ;; ; (i=50) ; ( “dn”,) ; 和while 例6.4 可以用于循環次數已知和循環次數不確定 while表達式1 表達式2 ;表達式3; () F語 句1-循環變量賦初值2-循環結束條件319 , , ) 502n ( ; i=50; ) sum=sum+2i;ifor用while來表示1 (2 ) 3;(2)表達式可以省略,但分號不能省略a)1( ) (
16、i=1;) 3(i=1;i=50 1, 3 ( sum=sum+2i;i+; ( ) sum=sum+2i; 3 2: (, ;i=50;) sum=sum+2i; (, ;; ) break 和continue:用于跳過循環體中下面尚未執行的語句,接著重新執行循環的判斷 例 將31sin(x)的近似值2 例6。6 例6。7求40F=11F=1(n=2)2F=F (n=3)nn1n-2 例6。8m 例 求10020020106-max 例6。6、例6.7、例 6。4、6.7、6。9、6。11、6。145-821第七章 數組1、數組的概念及數組的定義;C重點:數組的組成和特點.難點:數組元素存儲
17、格式對程序設計的使用.C數組:- 1)是一組有序數據2)這個集合用一個數組名來表示3)數組的元素序號用一個下標值來表示如:a0,a1,a2,a3b11 ,b12,b21,注意:a)數組名后,用方括號;下標從0b)下標值常量表達式:包括常量和符號常量(用#defineC n ;scarf(“%d”,&n); xn;c)數組分為:一維、二維等,主要由下標值的多少來確定. , ,, , ,char等/定義數組 /數組名常量表達式 22 a10=0,0,0,0,0,0,0,0,0,0 a10=0,1,2,3,4,5,6,7,8,91)static 0即:int a10=0,0,0,0,0,0,0,0,
18、0,0; a=0,1,2,3,4,5; a10;等價于: a6=0,1,2,3,4,5 ; a5=1,3;C書P124 例7。2 例7。3 , ,,等 a)每一維的下標從0開始,整個數組元素為:56=30個b)C3 a034 57 82 9對應表:4a 615 a06 a1a8 a12 9 a223 mna,aij序號的公式: in+j如:a01 03+1=1(第二個) 如33 a2223+2=8 數組名常量表達式常量表達式 常量表達式數組名長度12長度3 a2 1)兩種基本方法: a23=1,2,3,5,6,7 1 0 03 0 0 1 0 0 03 1 0 00 0 9 03)定義數組時,
19、第一維的長度可以不指定,但第二維的長度要指定(編譯系統自動計算). 3=1,2,3,4,5,6,7,8,9 a33=1,2,3,4,5,6,7,8,9 a a34=1,3,1,0,0,9書P128 例7。4例7.534存放字符數據的數組;每一個元素存放一個字符. 數組名常量表達式即:char 說明:由于字符與整型是互相通用的,可使用 ; 241)static c5=a, static ( 錯誤,多一個元素) (正確) 2)static =a, 一個字符數組元素,代表一個字符.即:x=c2x的值為“cC c 或 =I, y,0;注:(a)系統對字符串常量自動加一個0(b)字符數組并不要求它的最后
20、一個字符為0 c10=“ABCDE”; (第5個元素0,第60) c10=A, E;5ASC為0)例76 i,j;(i=0;i=4;i+) (j=1;j=i;j+)printf((j=1;jstr2,則函數返回正整數如果:str1str2,則函數返回負整數strlen( )測試字符串長度,不包括0( ) ()P138 例7.8 例7.9五、該章的主要例題:例7.2、例7.8、例7.9六、主要習題:7.1、*7.2、7.3、7.5、7.6、7。9、7。11、7。137.7、例27 3、變量的生存期與作用域函數間的參數傳遞(值傳遞和地址傳遞).變量存儲作用域及自動變量與靜態變量的區別.-在C在C程
21、序中:分為標準庫函數和用戶自定義函數減少重復編寫程序段的工作量.語語句調用語句功能語功標準庫函數:由C語言預先編寫的一系列常用函數(系統提供)C 400用戶自定義函數:一般自定義函數和自定義函數庫(用戶先已編好的)二、函數定義(子函數的設計)格式: 函數名(形式參數表列) 說明:1)類型定義符:函數返回值的數據類型a) , , , int 函數無數據返回,使用 2)函數名:函數的名稱(用戶取的:合法的標識符)3)形式參數表列:函數調用時傳遞信息的通道 a)(參數說明 (形式參數)28 add(x ,y) add(x,y) x=x+y; ; x,y; ; b)returnreturn語句.()
22、/*(打印平方表)*/ (x) ; i; (;i=10;i+) (i );(x ) x ;printf(“dtdn,x,x*x);際參數”. max(intx ,y)例8。2 (主函數) , 實際參數形式參數特點:實參通過復制的方式傳遞給形參(占用不同的內存空間) 2ax調用函數的實參:給出具體數據 調用函數實參:一般是數組名或指針變量格式: 29(實際參數與形式參數一一對應,既一一傳遞數據)C例:P150 例8。4 () i=2,p;p=f(i,+i);(“d,p );f為f(3, a ,b) (ab) 1;return(c運行結果:0j=+i;k=+i;p=f(j,j);k);d, ”,i
23、,i+);當:i=3; 4,330(1)把函數調用作為一個語句,即單獨一個語句行. (2) 即:c=2max(a,b (3)函數調用作為一個函數的實參;即:m=max(a,max(b,c);作用:在函數使用前對函數的特征進行說明的語句.(用戶自定義函數)C語言規定b)如果函數定義在調用函數之前,可以不必加以說明b)形式參數標識符可以不相同 ( ) (x,y ); /函數說明/- (a ,b) /*函數定義 a,b與x,y不同/非int 例8。3、8。531 (),b=5;(x,y) ;定sum=add( a,b);義( ) add(x ,y) , ,b=5。 ;sum=abc(a,b 說明:使
24、用庫函數,一般在文件開頭用include即:#include “math。h a=sqrt(x) 1)C 函數定義函數定義1232)C函數允許嵌套調用,即在調用一個函數的過程中,又調用另一個函數。()調用ab函數一“遞推”首先“回推”,然后在遞歸過程中,必須具有一個結束遞歸過程的條件.例:N!1(N=0,遞歸公式=N(N-1)! 求:4! n )sum=fac(4);32 fa=nfac(n-1); fa=4fac(41)=4*fac(3) fac(3) fa=3fac(3-1)=3fac(2) fa=2*fac(21)=2*fac(1) fac(1) fa=1*fac(11)=1*fac(0
25、) fac(0) fa=4*3*211fa=3*2*11fa=21*1fa=11六、函數參數的使用(實參或形參)實參:在調用函數中; 2)變量 4)數組名 5)指針調用函數的實參:給出具體數據 主要是:調用函數實參:一般是數組名或指針變量) b) () a5;a0=mul(a1,a4);x,y ) s ;return( s33 ()swap(floata2=10.5,2。7;x2) x ) x2;t=x0;x0=x1;x1=t;說明:a)數組名在主調函數和被調函數中,分別進行定義,并且類型一致。b)調用的實質:a和數組xaa105272727105105 語言編譯時,對形參數組大小不作檢查,只
26、是將實參數組的首地址傳給形參數組,這樣兩個數組共同占用同一段內存單元)例(J5_4.C)fun(floatx4);a a1 a2 a3fun(a1);第23 (i=0;i=3;i+) 0。2 x0 x1 x2printf(”5。1ft,ai);x4)x0=x0+1;x1=x1+1;x2=x2+1; a和數組xaa3561a17112a0a171a2027989a2a128934 x3,書P164 例 例 例8.12書P166 例8.13 () a35;mul(n,a12,a04 );mul(intx,y , z ) s;例 (j5_8。c) tran(intx);tran(2,a);0列 9個
27、0列 9個0列 4個tran(2,a0);tran(0,a2);計算數組元素在數組中的序號n,int (i=0;i 文件名 用戶定義的頭部文件(p_format.h) ”n”D ”d”DDDDDDDDDDSs程序調用中包含用戶定義的頭部文件(j4_31。c) ”p_format。ha,b,c,d;a=1;b=2;c=3;d=4;PR(D1,a);PR(D2,a,b);PR(D3,a,b,c);C400400 “math。h” 40書P381 C對滿足一定條件的語句行進行編譯稱條件編譯 1(1)2作用:如果標識符被定義過(用define1;2 1(2)2作用:如果標識符未定義過(沒有用#defi
28、ne1;21else(3)2作用:如果表達式的值為真,編譯程序段1;2 例 例8.10 例 例8.3 例8.11 例9.1 例 例8.5 例 例8.14 例 例8.16 例9.3十一、該章的主要習題:P186 8。18。4 8。11 8。15 例例8。13 例8.14 例 例8.16 例 例9。1 例9.3 例8.10 例8。1141第十章 指 針重點:指針的概念及C難點:指針的運算和使用.C 2 4 為1一個內存單元:可用內存單元地址與內存單元內容表示 i,j,k;43變量i變量j變量kp說明:1)變量的“直接訪問 i,j,k如:printf( ,i) i 20002000 ,&i) i 2
29、0002000如:k= i2000和j2002422000開始的地址中取出數據值(3)2002開始的地址中取出數據值(4)把它相加后k2006這種按變量地址存取變量值的方式稱為“直接訪問2)變量的“間接訪問i的地址存放在另一個內存單元中.ii的地址的單元(3000),從中取出i的地址(2000)i的值(3 結論:如:p3000 2000是指針(地址)p 星號運算符(單目運算符)稱“指針變量”3p*p=3 b)p為指針變量,*pc)運算符與運算符的特點:*-指針運算符 &-取地址運算符當p=&i時,可有:p=3 或*變量名例:int p; pc; *pf;注:指針p, 放的是地址值,為整型數;
30、只能存放地址(指針) p 有:&aa的地址,pp ( ) a,b; p1, ;43 ;;p1=a ; ;printf(printf(“%d,dn”,*p1,*p2);“d,%dn”,*p1,*p2);printf(“d,dn,a ,b); 5 5 520,205說明: *p1:有*p1為a, 那么,&p1與a :-有&a為a , 那么,*a每加(減)一,就指向它基本類型的下一個(上一個)元素的位置。例1:intp1=b;abcp1=cp+改為pcd有:p1=a,p1a變量例2:int a,b,c,d,*p1;xyzcp1=&c例3:float x,y,z,*p2;p2=&x;p2=p2+2;z
31、p2=z2)邏輯運算C(j6_11.c)例44 p,q,*r,x;a=1,b=2,c=3;p=&a;q=b;r=&c;printf(x,%x,x,%xtn”,p,q,r,p&q&r);printf(”%xt”,(!p)?q:r);, ,, ,1( 例10。2 例10。3) 數組的指針:數組元素的指針:說明:引用數組元素 定義: a5 ; ;/*定義5個數組元素/*定義一個整型的指針變量/指針變量的賦值:p=a0;或/*數組名a代表數組的首地址/在定義指針變量時可以賦給初值: *p=&a0; 或 ;p a02即a0=2如果:p=p+2; a2 2 即a2=2a245說明:(1)如果p的初值為&a
32、0則:a)p+i和a+iai的地址b)(p+i)或(a+i)是p+i或a+iai如:pi與*(p+i)等價所以,引用一個數組元素,可用:下標法,即:ai形式指針法,即:()或*( ) 例10.5()2)通過數組名計算數組元素地址() i; i; i10;scarf(“d”,&ai);printf(“n”(i=0;i10;i+)printf(“d”, (i=0;i10;scarf(“d,&aiprintf(“n”);i10;printf(“d,*(a+i) () a10; (i=0;i10;i+)scarf(“%d,ai printf(“n”(p=a; p(a+10);p+) );(p=a; p
33、(a+10);a+) );/*a是數組名,是數組首地址,值不變/ary2000*/*p1,p2;p1=&ary00;46printf(”d,%dn,*p2,*(p1+0); dn, ary22);printf(”%d,%dn, (p1+1)+1); 例10。6 ()*p,i,a5; (i=0;i5;i+)scanf(d,p+);printf(”n”);/p=a*/ (i=0;i5;i+,p+)printf(”%dt,*p); 2345pa(即p=a)a)p+(p+=1),ppp+1p等價于*(p+)例printf(“d”,*p+) 先輸出p,然后使p1c)(p+)與(+p)的區別:p加1;(+
34、p):先p加1,再取*p值如p=a0; *(p+)值為:a0的值,pa1*(+p)值為:a1的值,pa11,即:(a0)+,1,不是指針值加1(1)一維數組(p=a) 是ai的地址 和a+ii*(p+i)和(a+i)都表示a+i所指對象的內容;即*(p+i)=*(a+i)=ai指向數組元素的指針,可以表示成數組的形式;方法:pi=(p+i)47 那么:p2=*(a+3+2)=a5p2=(a+3-2)=a1(2)二維數組(p=a)地址:100。書P224 a1 a1a2a3112。118。 表10.1 , ,4,5,6,7,8,9,10,11,12a3 0 a0,a1,a2,a3可表示二維數組
35、ai=ai0ai+jij即有: ai+j=&aij例 (j6_8。c)(p=a0+2,i=0;i10;i+) (i=0;i4;i+)*(a+i) I (j=0,p=(a+i)+j;j3;j+)printf(%5d,*p+); 3 4 5 6 7 8 9 3 1 2 3 4 5 6 7 8 9 a+0,a+3m個元素組成的一維數組的指針(P229) ;即定義了一個指向一維浮點數的指針48f指針地址為:10004if0+2=1000+8=1008 例有: 例10.9例 (j6_11。c) 例 (j6_12。c) 例 0)結尾的字符數組稱為字符串.C語言中,實現一個字符串有: st; (“%sn”,
36、注:st是數組名,表示字符數組的首地址3的元素(D) st+3是指向“D”指針 ;“sn”,) ;注:沒有定義字符數組,C符數組用來存放字符串常量;用st指針指向字符串首地址。ABCDE 不能有:char ;*st= *st; ,而字符數組只有在初始化時才能 ,;49 ; ; 3)例子:P234 例例例()*p,s=45678;strlen(char printf(”x=x,”,s); printf(”%x,,s); /n; 45也可以指向:整型變量、字符變量、數組;一個函數:在編譯時,自動分配一個入口地址,這個入口地址-稱為函數的指針a和b 例10。23() max(); a,c; (“d,
37、 d”,&a,c=max((“a=d,max=%d”, b,c);y )z; z=x;z=y; (); a,b,c;p=max;scarf(“d,%d,a,c=(p) b); (“a=d,b=d, max通過一個指針變量指向一個函數(max的地址)50函數子程序的地址,達到 訪問函數的目的. (p)()p (( 說明:a)類型標識符(int):指函數返回值的類型(返回值為整型) 專門用來存放函數的入口地址的.在程序中,把哪一個函數的地址賦給它,它就指向哪一個函數。a)函數指針變量賦值:由函數名賦值;p=maxc=(p)(a,注:函數的返回值,是整型(由:int ( p)() c)對指向函數的指
38、針變量,如下運算:p+n、 p+、a和b兩個數,分別找出最大者,最小者,兩數之和/*主程序/( ) 例max(),min( add( /函數說明*/a, &b);process(a, /*求最大值*/process(a,min); /*求最大值/printf(“sum=”);add); /求兩數之和*/函數子程序/ y, (*fun)();s;s=(*fun)(x,y);printf(“%dn”,51/求最大值*/(x, y; /求最小值*/ y; /求最大值/ y; z;(xy) z=x; z=y;(z); (xy) z=x; z=y; 一個函數可以帶回一個:整型值、字符值、實型值; *函數
39、名(參數表); fun(x, fun 例10。26()*search(); /*函數說明/i,m;printf(enterprintf(TheNo.dare:n,m);p=search(score,m);(i=0;i4;i+) printf(”5.2ft,(p+i)); search(pointer,n)/*函數定義/ (*pointer)4; /pt=(pointer+n);(pt);注:改為:pt=(*pointer+n); 一個數組的每個元素都是指針類型-稱為指針數組 數組名長度說明52 p4是一個4個整型變量. p445b)用指針數組中的元素分別指向各字符串.*p4a461 2 3 1
40、 2 p1 2 31 21 2 3 4 51p1 2 3 4 5 1 。p3 *p 例10。27 *p;p2級指針,相當于:int (*p) () m=3, *pm=m, pn=n; p=&pn;printf(“dt%dn,*p);pm變量m3指針ppnpnn4( ) *p;i;i5;printf(“sn”,53 例10。28(j6_24。c)例10。29(j6_25。c)main主函數,一般情況下,main( 特殊情況下,也可以帶形參,即:main(a,b )與之匹配的實參由操作的命令行提供;命令行定義形式:命令名 1 2 nmain(a,b)函數傳給該函數的形參 )12命令行參數應當是字符
41、串,這些字符串的首地址構成一個指針數組。例1:(j6_26。c)i=1;printf(dn,argc);while(-argc0) 4abcbbdddd argv1argv2argv3例( a;printf(%dn”,r);while(-argc0) :n);54 a 5a a1aa2a3a4指針的數據類型和指針運算小結 f; p; p6注:p中的值是地址,即: an; n pn; pn;n個指向各數據的指針元素組成,1 2 3 1 2 1 2 3p21 2 3 4 5 1 。1 2 3 4 51 (p)n;pn個元素的一維數組的指針變量,p即:p+1p (f ;即定義了一個指向一維浮點數的指
42、針,f有5fj個元素.f指針地址為:10004i可用于處理二維數組(a34)說明:1)f+iai注:f+22)(f+2)+3a23注:(f+2)+3與*(f+2)+33)(*(f+2)+3)表示a23a2355 p p );p p例如:p+、p、p+i、pi、p+=i、p=i說明:p+i代表地址計算:p+ci,cc=2c=4字符型=1)piapp=&arrayiarrayparray第ip;maxmaxp和p2p2p1注意:1)不能把一個整數賦給指針變量,即p=1000;NULL0如:p1=a1 p2p1=5-1=4 即: 、 p2p156第十一章 結構體和鏈表難點:結構體數組的應用與數據庫管
43、理的聯系,鏈表的使用. 實型(浮點型) C-結構體和共用體(聯合) 結構變量表;具體有三種方法: ; ;57 women,; define name10; certificate; worker, women,mem; age; certificate;worker,teacher,women,mem; name10; teacher,women,,即可以嵌套定義。 month; day; year; birthday; teacher; mem;581)使用圓點運算符“圓點運算符“-稱為成員運算符,用于連接結構變量與其中的成員.對成員變量可以像普通變量一樣使用,進行各種運算.即:worker
44、name 、 workerage 、 workercertificate結構變量的初始化與數組相似,在定義結構變量同時,進行初始化。 worker=“王name10;CC 例 一個結構變量可以把不同類型的數據集中處理,如:一個學生的學號、姓名、成績等不同類型的數據;10個學生的數據,就要設置10 1)結構數組的元素作實參時,被調函數的形參必須是同一類型的結構變量,其調用過程 stu10= 例11。2 )atof()在”stdlib.h中 例 (j7_4。c) wage;59worker3; (i=0;i3;i+) (i=0;i成員名例 sex; 10003,”ZhengQing,F,19;()
45、*p;printf(No。(p=stu;pstr+3;p+)scoren);p-num,pname,p-sex,p-age);運行結果:M MFstruct 用指向結構體變量(或數組)的指針作實參,將結構體變量(或數組)的地址傳給形參. 例 11。561 1 2 3 4NULL頭指針 靜態鏈表一般建立在已定義好的結構體數組的基礎上,數組中每個元素的 0score; stu10,p;t=&stu0。score;for(i=0;i=8;i+)printf(enterNo。%d:,i+1);scanf(ld,f”,stui.num,stui.score);stui.next=NULL;62p=pnext;malloc() sizen,) nsize此函數值是一個指向分配域起始地址的指針.free() ptrptrcalloc或a)p=(float4p注:函數的返回值為指向型的指針(地址),它未確定指向任何具體的類型.如果要想b)new=(struct *)calloc(50,sizeof(float));50(4) 0# 6364 0內存的結構,稱為共用體(聯合)類型的結構(2個 1個 4個65 ch; ch; f;f;c b,c b,說明:1)“共用體與“結構體”的區別b)共
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年土地承包合同的附加協議
- 2025標準租賃合同協議范本2
- 2025汽車租賃評估合同
- 2025年室內外租擺植物合同范本
- 采購豬肉、蔬菜監獄2023年大宗伙食物資政府采購項目(D、E包)通派-副食品
- 2025全球知名品牌授權合同范本
- 《深度解析》課件
- 山東省泰安市肥城市2024-2025學年度下學期期中考試六年級歷史試題統編版(五四學制)(含答案)
- 福建省福州市八縣(市區)協作校2024-2025學年高二下學期期中聯考語文試卷(含答案)
- 皮帶船租賃合同協議
- 消費者起訴狀模板范文
- 2022年工程機械設備租賃服務方案(含應急處理方案、保障措施)
- (完整版)外科護理學知識點整理
- 2019版《壓力性損傷的預防和治療:臨床實踐指南》解讀
- 在那遙遠的地方課件
- 圍堰吹填施工方案
- 創業計劃書案例-產品類-南大無醇酒創業完全版
- 食品生產企業動態風險因素量化分值表食品生產日常監督檢查要點表
- 基層醫療衛生機構依法執業自查表
- 氣管插管術培訓課件
- 普通高等學校畢業生就業協議書(三方協議)
評論
0/150
提交評論