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

正文內容

程序設計基礎(c語言)中ppt-全文預覽

2025-11-04 20:13 上一頁面

下一頁面
  

【正文】 )。b,amp。b,amp。 p2=temp。x2); printf(“ after swap: x1=%d, x2=%d” , x1, x2); } void swap ( int *p1, int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; } 指針作為參數時并未改變實參的值 而是改變了所指向單元中的內容 程序設計基礎( C語言) 62 ? 指針作為函數的參數 ?在主調函數中,傳遞的是兩個變量的地址 ? 并沒有試圖改變調用函數時的參數,而只是利用了指針變量的特性,改變了指針變量所指向單元的內容 ?swap根據得到的兩個變量的地址將指針指向的變量中的數據進行調換, swap就是在要調換數據的兩個實際變量的存儲單元上進行的數據交換 ?交換的結果自然帶回到主調函數 main中 ?問題?? ?如果將例題中的 swap()函數寫出如下的形式,那么主調函數中的實參 x1和 x2的值能否改變呢? swap(p1,p2) int *p1,*p2。 /*單個字符操作 */ } 程序設計基礎( C語言) 54 ? 指針與字符串的應用 ?例 :設計程序,將兩個字符串連接起來 ? 不要用 strcat函數 include main() { char s1[80], s2[80] ; printf(“ \n input string1:”); gets( s1); printf(“ \n input string2:”); gets( s2); stringcat( s1, s2); printf(“ \n new string: %s”,s1); } stringcat( char *s1, char *s2) { while ( *s1!=?\0?) s1++; while ( *s2!=?\0?) { *s1=*s2; s1++; s2++;} *s1=?\0?; } 程序設計基礎( C語言) 55 ? 指針與字符串的應用 ?例: 編寫程序判定一個字符在一個字符串中出現(xiàn)的次數,如果該字符不出現(xiàn)則返回 0值 ? 算法 ?從頭開始掃描字符串的每一個字符 ?若當前字符等于字符串中的字符時,次數計數器加 1 ?直到字符串中的所有字符比較完成 程序設計基礎( C語言) 56 include main() { char *str, c; printf(“ enter a string: \n”); gets( str); printf(“ enter a char: \n”); c=getchar(); printf(“ counts: %d\n” , char_count( str, c) );} int char_count( char *string, char letter) { int count=0; while ( *string) if ( *string++= =letter) count++; return( count); } 程序設計基礎( C語言) 57 ? 函數與指針之間有著密切的關系 ?包含三種含義 ? 指針作為函數的參數 ? 函數的返回值為指針 ? 指向函數的指針 程序設計基礎( C語言) 58 ? 指針作為函數的參數 ? 調用函數并希望改變參數的值時,指針做函數參數非常實用 ? 按址傳遞 ? 當函數要求能夠修改調用函數中的一個或多個值,或能夠傳遞指向大型數據對象的地址以避免開銷很大的傳值調用 ? 通過變量的地址就可以通過地址間接訪問變量的數值 ? 指針是變量的地址 ? 指針作函數的參數就是在函數間傳遞變量的地址 ? 函數間傳遞的不再是變量中的數據,而是變量的地址 ? 變量的地址在調用函數時作為實參,被調用函數使用指針變量作為形參接收傳遞的地址 地址 實參指針 地址 形參指針 傳遞 變量的值 變量 i 地址 程序設計基礎( C語言) 59 ? 指針作為函數的參數 ? 要求 ? 在調用函數時以地址做參數傳遞 ? 當將變量的地址傳遞給被調函數后,在調用函數的函數體中采用間接引用運算符 *修改內存單元中的該變量的值 ? 實參的數據類型要與作為形參的指針所指的對象的數據類型一致 ? 如果是變量的值需要修改,則在變量前面使用 amp。 printf(“%s”,str)。 strcat(str1,str2)。 則不能表示數組 a中元素的表達 式是: ? A)*p B)a[10] C)*a D)a[pa] 程序設計基礎( C語言) 48 ? 指針的運算 ? 提示 ? 數組名代表數組的首地址 ? 固定的,不允許修改的 ? 不能對數組名采用 ++/操作 ? 指針的算術運算除了應用于數組外沒有什么意義 ? 除數組外,不能認為兩個數據類型相同的變量在內存中是連續(xù)存儲的 ? 指針的運算與其基類型有關 ? 通常情況下允許一個指針或多個指針指向同一個目標 ? 常見錯誤 ? 對不指向數組的指針進行算術運算 ? 指針的運算結果超出的數組的范圍 程序設計基礎( C語言) 49 ? 可以通過字符數組和字符型指針處理字符串 ? 例如: ? 字符數組實現(xiàn)的方式 char ch[ ]={“ this is a book!” }; printf (“ %s\n” , ch); ? 對字符數組初始化 ? ch是字符數組 ? 它存放了一個字符串 ? 字符指針實現(xiàn)的方式 char *ch=“this is a book!” ; printf (“ %s\n” , ch); ? 是對字符指針初始化 ? *ch是字符指針 ? 它指向的是一個字符串常量的首地址,即指向字符串的首地址 程序設計基礎( C語言) 50 ? 可以通過字符數組和字符型指針處理字符串 ? 字符指針與字符數組區(qū)別 ? char *ch字符指針是一個變量 ? 指向字符串的第一個字符 ? 可以改變字符指針使它指向不同的字符串 ? char ch[ ] 是一個字符數組 ? 一個足以存放字符串和空字符‘ \0’的一維數組 ? 可以改變數組中保存的內容 ? 數組名 ch是一個不可改變的常量 ? C語言規(guī)定 ? 一個指針類型的變量如果指向對象為字符型 ? 可以對其賦值(或初始化)字符串常量 ? 此時字符指針指向的就是用來保存字符串的字符數組的首地址 程序設計基礎( C語言) 51 ? 可以通過字符數組和字符型指針處理字符串 ? C語言規(guī)定 ? 一個指針類型的變量如果指向對象為字符型 ? 可以對其賦值(或初始化)字符串常量 ? 此時字符指針指向的就是用來保存字符串的字符數組的首地址 ? 定義 ? 應用 ? 可以使用字符指針指向一個字符類型的數據 ? 可以使用字符指針訪問字符串常量(另一種方法為字符數組) ? 將“ good”賦予指針 p并不是將字符串的字符賦予 p, 是將“ good”在內存中的存儲區(qū)的起始地址賦給 p char *p; main( ) { char *pc; char ch; pc=amp。 *( p+4) +=6。 C array[5] array[0] array[1] array[2] array[3] array[4] 2 4 6 8 10 2021 2021 2021 2021 2021 array prt (1) (3) ( 5) (2) 程序設計基礎( C語言) 43 ? 指針的運算 ? 提示 ? 例如: int a[5],*pa: pa=a; ? pa++; /*使 pa指向下一個元素 a[1]; */ ? *pa; /*指針所指向的數組名(或變量或數組元素) */ ? *pa++; /*先取出 pa所指向元素的值 ( *pa),后 pa+1送 與 pa。 printf( “ \n”) 。a[n]) 。 main() { int n,a[10]。n=9。n=9。 printf( “ \n”) 。n++) scanf( “ %d”,a+n) 。 } 【 例 2】 采用表示的數組 /偏移量表示的地址法輸入輸出數組元素。 for( n=0。 main() { int n,a[10],*pa=a。i++) ; /*函數體中沒有任何動作 */ } /* 采用指針表示法將 s2拷貝到 s1.*/ void strcopy2(char *s1,const char *s2) { for( 。 } 這兩個函數都將一 個字符串(可能是 一個字符數組)拷 貝到一個字符數組 中,比較這兩個函 數原型可以發(fā)現(xiàn)其 形式是相同的,雖 然這兩個函數完成 同樣的功能,但是 他們的實現(xiàn)過程是 不同的。 strcopy1 (str1,str2)。a[n] ? *(p+n)和 *(a+n) 表示數組元素 a[n] ( n的取值為 0~ 9 ) ? 指向數組的指針變量也可以用數組的下標形式 p[n],其效果相當于 *(p+n),等價于 a[n] 程序設計基礎( C語言) 31 ? 指針和數組的可替代性 ?例 include void strcopy1(char str[],const char *)。 printf (*p=%d, x=%d, y=%d\n, *pt, x,y,*p2)。 x = *(pt+2)。數組名 [0]) ? 數組元素的指針就是該數組元素的地址 程序設計基礎( C語言) 28 ? 指針和數組緊密聯(lián)系 ? 分析程序 ? C語言中規(guī)定 ? 數組第 1個(下標為 0)元素的地址就是數組的首地址 ? 數組名代表的就是數組的首地址 ? 數組名代表的一個地址常量,是數組的首地址 ? 它不同于指針變量 include main ( ) { int a[ ] = {1, 2, 3, 4, 5} 。是一對功能恰好相反的運算操作符 ? 在實際應用中 , 應特別注意 amp。即 j的內存單元中, P2和p1中存放的地址并不發(fā)生變化。aptr)。 are plements of” ”each other .\namp。 printf(“The address of a is %p\n” ”The value of aptr is %p\n\n”,amp。m; printf( “ %d”, m ); }會產生什么結果? 程序設計基礎( C語言) 23 include main() { int a, *aptr。m); p=amp。 pa=amp。 ? x=*pa。 *也稱為“間接引用運算符”或“指針的復引用” ? 例如 ? a=*prt。x表示?。牡刂?,將變量x地址賦給指針變量 p */ ? 提示 ? amp。) ? 作用是取變量的地址 ? 運算對象必須是(任意類型的)變量 ? 例如 ? amp。/*表示指針 p為空,沒有指向任何對象 */ ? 一般情況下給沒有初始值的指針變量賦值為 NULL ? 實際上, NULL是整數 0,系統(tǒng)保證 0單元不存儲任何數據的值(地址) ? NULL是頭文件 以及其它幾個頭文件中定義的符號常量 指針 P 空地址 NULL 指針變量 內存單元 程序設計基礎( C語言) 16 ? 指針變量初始化 ?提示 ? 在使用指針之前一定要對其進行初始化 ?否則程序不知道指
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1