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

正文內(nèi)容

計算機(jī)本科c語言第十章講(1)-資料下載頁

2025-01-18 19:38本頁面
  

【正文】 scanf(%d,%d,amp。a,amp。b)。 printf(max=)。 process(a,b,max)。 /*主調(diào)函數(shù)的實參用函數(shù)名 */ printf(min=)。 process(a,b,min)。 /*一般在嵌套調(diào)用中使用 */ printf(sum=)。 process(a,b,add)。 /*次主調(diào)函數(shù)對其它函數(shù)操作,完成一定的功能; */ printf(\n)。 } max(x,y) int x,y。 {int z。 return(z=xy?x:y)。 } min(x,y) int x,y。 {int z。 return(z=xy?x:y)。 } add(x,y) int x,y。 {int z。 z=x+y。 return(z)。} process(x,y,fun) int x,y。 int (*fun)()。 { int result。 result=(*fun)(x,y)。 printf(%d\n,result)。 } 用指向函數(shù)的指針變量作函數(shù)的參數(shù) 說明: ( 1)一般在嵌套調(diào)用中使用,傳遞的是函數(shù)的入口地址; ( 2)次主調(diào)函數(shù)對其它函數(shù)操作,完成一定的功能; ( 3)主調(diào)函數(shù)的參數(shù)(實參)用函數(shù)名。 返回指針值的函數(shù) 一、指針函數(shù)的定義 數(shù)據(jù)類型標(biāo)識符 *函數(shù)名(形參表列) 形參說明 { 函數(shù)體 } 如: int *a(x,y) /*存儲類別為外部函數(shù) */ int x,y 。 { …….. return (…)。/* 函數(shù)體中必有 return語句 */ } 二、指針函數(shù)的應(yīng)用 例 有若干個學(xué)生的成績(每個學(xué)生有 4門課程),要求輸入學(xué)生序號后,輸出該生的全部成績。用指針函數(shù)來實現(xiàn)。 include main() {static float score[][4]={{60,70,80,90}, {56,89,67,88},{34,78,90,66}}。 float *search()。 float *p。 int i,m。 printf(enter the number of student:)。 scanf(%d,amp。m)。 printf(the scores of No.%d are:\n,m+1)。 p=search(score,m)。 for(i=0。i4。i++) printf(%\t,*(p+i))。 } float *search(pointer,n) float (*pointer)[4]。 int n。 {float *pt。 pt= *(pointer+n)。 return (pt)。 } 運行結(jié)果: enter the number of student:1 回車 the scores of are: 例 , 找出其中有不及格課程的學(xué)生及其學(xué)生號 。 main() {static float score[][4]={{60,70,80,90}, {50,89,67,88},{34,78,90,66}}。 float *search()。 float *p。 int k,j。 for (k=0。k3。k++) {p=search(score+k)。 if (p==*(score+k)) {printf(No.%d scores: ,k+1)。 for(j=0。j4。j++) printf(% ,*(p+j))。 printf(\n)。}} } float *search(pointer) float (*pointer)[4]。 {int i。 float *pt。 for(i=0。i4。i++) if(*(*pointer+i)60) pt=*pointer。 return (pt)。} 運行結(jié)果: scores: scores: 通過上面 2個例子我們可知,指針函數(shù)函數(shù)體中必有 return語句, 且返回值為指針。 例: 通過改變函數(shù)返回值改變它所指向的存儲單元的值 include int k=0。 int *fun1() {return amp。k。} int *fun2(int *ptr) {return ptr。} main() {*fun1()=10。 printf(“k=%d\n”,k)。 int t=3。 *fun2(amp。t)=5。 printf (“t=%d\n”,t)。} 10. 7 指針數(shù)組和指向指針的指針 重點:指針數(shù)組及其應(yīng)用 一、指針數(shù)組 其元素均為指針型數(shù)據(jù)的數(shù)組,稱為指針數(shù)組。 定義形式: 類型標(biāo)識符 *數(shù)組名 [數(shù)組長度說明 ] 如: int *p[4]。 不能寫成 int (*p)[4] 注意: 1) 在使用指針數(shù)組中的元素之前,必須為該元素指定一個確定的值;對指針數(shù)組的初始化時其每個元素的值都為地址。 int i1,i2,i3。 int *p[3]={amp。i1,amp。i2,amp。i3}。 char *str[3]={“Guangzhou”,”Biejing”,”Wuhan”}。 2) 在使用指針數(shù)組元素時,與指針的使用方法一樣 include main() { int k[4],t。 int *p[4]={amp。k[0],amp。k[1],amp。k[2],amp。k[3]}。 for (t=0。t=3。t++) k[t]=t*2。 for (t=0。t=3。t++) printf(“%4d”,*p[t])。 } 3) 指針數(shù)組主要用于指向多個字符串,使字符串處理方 便。 例如,圖書館有若干本書,想把書名放在一個數(shù)組中(見下圖),然后要對這些書目進(jìn)行排序和查詢。 按一般方法,字符串本身就是一個字符數(shù)組。因此要設(shè)計一個二維的字符數(shù)組才能存放各字符串。但二維數(shù)組的列數(shù)確定后,每一行的元素個數(shù)都相等。但實際上各字符串(書名)長度是不相等的。如按最長的字符串來定義,則會浪費許多內(nèi)存單元,如中圖。 可以分別定義一些字符串,然后用指針數(shù)組中的元素分別指向各字符串,見下圖。 如果想對字符串排序,不必改動字符申的位置,只需改動指針數(shù)組中各元素的指向 (即改變各元素的值,這些值是各字符串的首地址)。這樣,各字符串的長度可以不同,而且移動指針變量的值(地址)要比移動字符串所化的時間少得多。 例 對字符串排序,按由小到大輸出。 思路:定義一指針數(shù)組,存放各字符串的首地址,要排序,只需交換指針數(shù)組元素的值。 include main() {void sort(_______)。 void print(_______)。 static char *name[]={Follow me,BASIC, Great Wall,FORTRAN,Computer design}。 int n=5。 sort (name,n)。 print(name,n)。 } void sort(name,n) char *name[]。int n。 {char *temp。 int i,j,k。 for(i=0。in1。i++) {k=i。 for(j=i+1。jn。j++) if(strcmp(name[k],name[j])0) k=j。 if(k!=i) {temp=name[i]。name[i]=name[k]。name[k]=temp。} } } void print(name,n) char *name[]。int n。 {int i。 for(i=0。in。i++) printf(%s\n,name[i])。 } 運行結(jié)果: BASIC Computer design FORTRAN Follow me Great Wall void print(name,n) char *name[]。 int n。 { int i=0。 char *p。 p=name[0]。 while(in) {p=*(name+i++)。 printf(%s\n,p)。 } } 二、指向指針的指針 即指向指針數(shù)據(jù)的地址。 上面 name是指針數(shù)組,元素均是指針數(shù)據(jù),可定義一指針變量,指向數(shù)組,對數(shù)組各元素操作。 1 定義形式: 類型標(biāo)識符 * * 變量名 如: char **p。 p為一個指向字符指針變量的指針變量。一般指向指針數(shù)組的首地址。 如: char *name[4], **p。 p=name。 又如: p=name+2。 printf(“%d, %d, %s”,p,*p,**p)。 輸出: 2022, 3016, Great wall 注意: 1)多級指針就是指向指針的指針 char *p1。 一級指針 char **p2=amp。p1。 二級指針 char ***p3=amp。p2。 三級指針 … 在 C語言中,一般只用到一級指針和二級指針,其它更 多級指針則很少使用。 2)通常多級指針都可以用同類型的低一級的指針的地 址來初始化 3)多級指針與指針數(shù)組有很大的內(nèi)在聯(lián)系。 例 main() {static char *name[]={Follow me,BASIC, Great Wall,FORTRAN,Computer design}。 char **p。 int i。 for(i=0。i5。i++) { p=name+i。 printf(%s\n,*p)。 } } 4) 指針數(shù)組的元素也可以不指向字符串,而指向整 型數(shù)據(jù)或?qū)嵭蛿?shù)據(jù),例如: int a[5]={1,3,5,7,9}。 int *num[5]={amp。a[0],amp。a[1],amp。a[2],amp。a[3],amp。a[4]}。 int **p。 此時為了得到數(shù)據(jù) 5,可以先使 p=num+2, 然后輸出**p。 *p是 p直接指向的對象 (地址 )。而 **p是 p間接指向的對象 (值 )。見下圖。 例 main() {static a[5]={1,3,5,7,9}。 static int *num[5]={amp。a[0],amp。a[1], amp。a[2],amp。a[3],amp。a[4]}。 int **p,i。 p=num。 for(i=0。i5。i++) {printf(%d\t,**p)。 p++。 } } 5)間接訪問的“ 單級間址 ”和“ 二級間址 ” 用指針訪問便是間接訪問。 若指針變量中存放的是目標(biāo)變量的地址,稱為“ 單級間址 ”,指向指針的指針為“ 二級間址 ”。還可以有多級間址。見下圖。 三、指針數(shù)組作 main函數(shù)的參數(shù) 指針數(shù)組的一個應(yīng)用是作為 main函數(shù)的形參。 1 無參主函數(shù) 類型標(biāo)識符 main() {…} 2 有參主函數(shù) 類型標(biāo)識符 main(argc,argv) int argc。 char *argv[]。 {…} 問題:( 1)實參從何處來 (
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1