freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[理學(xué)]20xxc語言第6章指針-資料下載頁

2025-02-18 19:33本頁面
  

【正文】 * 函數(shù)指針變量名)(實參表); ? 其中“ *函數(shù)指針變量名”必須用圓括號括起來,表示間接調(diào)用指針變量所指向的函數(shù);右側(cè)括號中為傳遞到被調(diào)用函數(shù)的實參。 2022/3/13 2. 函數(shù)指針的使用 例如,若有函數(shù) int f1(int x,int y) 和 int f2(char ch),則: int (*fs)( ); fs=f1; /* fs指向函數(shù) f1( ) */ x=(*fs)(a,b); /* 相當(dāng)于 x=f1(a,b); */ fs=f2; /* 改變 fs內(nèi)容,使 fs指向函數(shù) f2( ) */ y=(*fs)(str); /* 相當(dāng)于 y=f2(str); */ 北京科技大學(xué) 用函數(shù)指針調(diào)用函數(shù) ? 運(yùn)用函數(shù)指針變量調(diào)用函數(shù)時應(yīng)注意的問題: – 函數(shù)指針變量中應(yīng)存有被調(diào)函數(shù)的首地址; – 調(diào)用時“ *函數(shù)指針變量名”必須用圓括號括起來,表示對函數(shù)指針做間接存取運(yùn)算。它的作用等價于用函數(shù)名調(diào)用函數(shù),此外實參表也應(yīng)與函數(shù)的形參表一一對應(yīng)。 2022/3/13 2. 函數(shù)指針的使用 北京科技大學(xué) 用函數(shù)指針調(diào)用函數(shù) include void main( ) { int arr_add(int arr[],int n)。 int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}。 int *p,total1,total2。 int (*pt)( )。 /*定義一個指向函數(shù)的指針 */ pt=arr_add。 p=a[0]。 total1=arr_add(p,12)。 /*用原函數(shù)名調(diào)用函數(shù) */ total2=(*pt)(p,12)。 /*用指向函數(shù)的指針調(diào)用函數(shù),將函數(shù)入口地址賦給指針 */ printf(total=%d\ntotal2=%d\n,total1,total2)。 } 2022/3/13 2. 函數(shù)指針的使用 【 例 】 用指向函數(shù)的指針調(diào)用函數(shù)以求二維數(shù)組中全部元素之和 。 arr_add(int arr[ ],int n ) { int i,sum=0。 for(i=0。in。i++) sum=sum+arr[i]。 return(sum)。 } 運(yùn)行情況如下: total1=144 total2=144 北京科技大學(xué) 用函數(shù)指針調(diào)用函數(shù) ? 用函數(shù)指針變量調(diào)用函數(shù)的一般形式為: ( * 函數(shù)指針變量名)(實參表); ? 其中“ *函數(shù)指針變量名”必須用圓括號括起來,表示間接調(diào)用指針變量所指向的函數(shù);右側(cè)括號中為傳遞到被調(diào)用函數(shù)的實參。 2022/3/13 2. 函數(shù)指針的使用 北京科技大學(xué) 指針和函數(shù) 2022/3/13 用指向函數(shù)的指針作函數(shù)參數(shù) 【例 】寫一程序,如輸入 1,程序就求數(shù)組元素的最大值,輸入 2就求數(shù)組元素的最小值,輸入 3就求數(shù)組元素值之和 。 北京科技大學(xué) void process(int *x,int n,int (*fun)( )) /* 形參 fun為函數(shù)指針 */ { int result。 result=(*fun)(x,n)。 /* 以函數(shù)指針 fun實現(xiàn)同類型相關(guān)函數(shù)的調(diào)用 */ printf(%d\n,result)。 } arr_max(int x[ ],int n) { int max=x[0],k。 for(k=1。kn。k++) if (maxx[k]) max=x[k]。 return (max)。 } 2022/3/13 arr_min(int x[ ],int n) { int min=x[0],k。 for(k=1。kn。k++) if (minx[k]) min=x[k]。 return (min)。 } arr_sum(int x[ ],int n) { int sum=0,k。 for(k=0。kn。k++) sum+=x[k]。 return (sum)。 } 北京科技大學(xué) void main( ) { int a[N]={ 10,25,33,15,27},choice。 printf(Please input your choice:)。 scanf (%d,amp。choice)。 switch(choice) { case 1: printf(max=)。 process (a,N,arr_max)。 break。 /* 調(diào)用 process ( )求 a數(shù)組中最大值,以函數(shù)名 arr_max為實參 */ case 2: printf(min=)。 process (a,N,arr_min)。 break。 /* 調(diào)用 process ( )求 a數(shù)組中最小值,以函數(shù)名 arr_min為實參 */ case 3: printf(sum=)。 process (a,N,arr_sum)。 break。 /* 調(diào)用 process ( )求 a數(shù)組中元素值和,以函數(shù)名 arr_sum為實參 */ } } 2022/3/13 運(yùn)行情況如下: Please input your choice:1↙ max=33 再次運(yùn)行: Please input your choice:2↙ min=10 再 次運(yùn)行: Please input your choice:3↙ sum=110 北京科技大學(xué) 2022/3/13 指針和函數(shù) 帶參數(shù)的 main函數(shù) 1. 帶參數(shù)的主函數(shù)的定義 main(int argc, char *argv[ ]) { …… } ? main函數(shù)只能有兩個形參,并且這兩個形參的 類型也是固定的。第一個形參必須是整型變量, 第二個形參可以定義為字符型指針數(shù)組,也可以 定義為二級字符指針變量,因此也可以寫成 main(int argc, char **argv) 北京科技大學(xué) 2022/3/13 帶參數(shù) 的 main函數(shù) 2. 帶參數(shù)的主函數(shù)的調(diào)用 帶參數(shù)的主函數(shù)調(diào)用形式 : 可執(zhí)行文件名 參數(shù) 1 參數(shù) 2 …… 參數(shù) n 在 DOS系統(tǒng)提示符下鍵入的這一行字符稱為 命令行 。 可執(zhí)行文件名稱為 命令名 , 其后的參數(shù)稱為 命令行參數(shù) , 命令名與各參數(shù)之間用空格進(jìn)行分隔 。 北京科技大學(xué) 2022/3/13 3. 主函數(shù)參數(shù)的作用 argc 稱作參數(shù)計數(shù)器 , 它的值是包括命令名在內(nèi)的參數(shù)個數(shù) 。 argv 指針數(shù)組的作用是存放命令行中命令名和每個參數(shù)字符串的首地址 。 C:\file1 one two three argv[0] f i l e 1 \0 argv[1] o n e \0 argv[2] t w o \0 argv[3] t h r e e \0 argv argc 4 帶參數(shù) 的 main函數(shù) 北京科技大學(xué) 2022/3/13 【 例 】 舉例說明命令行參數(shù)與 main()函數(shù)中兩個參數(shù)之間的關(guān)系 。 帶參數(shù) 的 main數(shù) 北京科技大學(xué) include void main(int argc, char *argv[ ]) { if(argc==1) printf(“The content in argv[0] is :%s”,argv[0])。 if(argc==2) { printf(“The mand include %d parameter:”,argc1)。 printf(“%s”,argv[1])。 printf(\nThe content in argv[0] is :%s,argv[0])。 } if(argc==3) { printf(\nThe mand include %d parameter:,argc1)。 printf(%s%s,argv[1],argv[2])。 } if(argc3) printf(Bad mand!)。 } 2022/3/13 ? 注意 : 命令行參數(shù)所傳送的數(shù)據(jù)全部都是字符串。即便傳送的是數(shù)值,也是按字符串方式傳送給主函數(shù)。程序中使用這些參數(shù)時,還需要將數(shù)字字符串轉(zhuǎn)換成數(shù)值型數(shù)據(jù)。 C語言標(biāo)準(zhǔn)庫函數(shù)提供了一些相關(guān)的數(shù)據(jù)類型轉(zhuǎn)換函數(shù) 。 運(yùn)行情況如下: C:\cpp\VC\Debug cprog↙ The content in argv[0] is : cprog 第二次運(yùn)行 : C:\cpp\VC\Debug cprog one↙ The mand include1 parameter:one The content in argv[0] is: cprog 第三次運(yùn)行 : C:\cpp\VC\Debug cprog a b c↙ Bad mand! 北京科技大學(xué) 動態(tài)存儲分配 2022/3/13 什么是內(nèi)存的動態(tài)分配 ? C語言 中 允許建立內(nèi)存動態(tài)分配區(qū)域,以存放一些臨時用的數(shù)據(jù)。這些數(shù)據(jù)不必在程序的聲明部分定義,也不必等到函數(shù)結(jié)束時才釋放,而是在需要時隨時開辟,不需要時隨時釋放。 ? 這些數(shù)據(jù)臨時存放在一個稱為堆( heap)區(qū)的特別的自由存儲區(qū)??梢愿鶕?jù)需求,向系統(tǒng)申請所需大小的空間。由于未在聲明部分將這些數(shù)據(jù)聲明為變量,因此不能通過變量名引用這些數(shù)據(jù),而只能通過指針來引用。 北京科技大學(xué) 動態(tài)存儲分配 函數(shù)原型: void *malloc(unsigned size)。 調(diào)用格式: malloc(size) 功能:分配若干字節(jié)的內(nèi)存空間,返回一個指向該存儲區(qū)地址的 void型指針。 2022/3/13 1. malloc函數(shù) 北京科技大學(xué) 動態(tài)存儲分配 ? 函數(shù)原型: void *calloc(unsigned int n, unsigned int size)。 ? 調(diào)用格式: calloc(n,size)。 ? 功能:在內(nèi)存分配一個 n倍 size字節(jié)的存儲區(qū)。 ? 使用 calloc函數(shù)動態(tài)開辟的存儲單元相當(dāng)于建立了一個一維數(shù)組。 2022/3/13 2. calloc函數(shù) 北京科技大學(xué) 動態(tài)存儲分配 ? 函數(shù)原型: void free(void *p)。 ? 調(diào)用格式: free(p) ? 功能:釋放 p所指向的動態(tài)分配存儲區(qū),此函數(shù)無返回值。 ? 注意:實參必須是一個指向動態(tài)分配存儲區(qū)的指針,它可以是任何類型的指針變量。 2022/3/13 3. free函數(shù) 北京科技大學(xué) 動態(tài)存儲分配 ? 函數(shù)原型: void *realloc(void *p, unsigned int size)。 ? 調(diào)用格式: realloc(p, size) ? 功能:將指針 p所指向的存儲空間的大小改為size個字節(jié), size可比原來分配的空間大或小。 2022/3/13 4. realloc函數(shù) 北京科技大學(xué) 動態(tài)存儲分配 ? ANSI C標(biāo)準(zhǔn)增加了一種基類型為 void的指針類型,允許定義一個基類型為 void的指針變量,不指向任何具體的數(shù)據(jù)。 ? 在將 void類型指針 賦給另一指針變量時必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換使之適合于被賦值的變量的類型。指針類型轉(zhuǎn)換表達(dá)式的一般形式如下: (數(shù)據(jù)類型 *) 指針表達(dá)式 ? 其中“ (數(shù)據(jù)類型 *)”是強(qiáng)制類型轉(zhuǎn)換運(yùn)算,作用是將右操作數(shù)轉(zhuǎn)換成指定的數(shù)據(jù)類型指針。 2022/3/13 void指針類型 int a=10。 /* 定義 a為整型變量 */ int *p1=amp。a。 /* 基類型為 int型 */ void *p2。 /* 基類型為 void型 */ p2=(void)p1。 /* 轉(zhuǎn)換為 void類型然后賦值 */ printf(%d ,*p1)。 /* 合法,輸出 a的值 */ printf(%d ,*p2)。 /* 錯誤, p2是無指向的,不能指向 a */ 北京科技大學(xué) 動態(tài)存儲分配 2022/3/13 【例 】建立動態(tài)數(shù)組,輸入 5個學(xué)生
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1