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

正文內(nèi)容

chap08_指針-資料下載頁

2025-08-01 17:25本頁面
  

【正文】 1, “world”)。 str1中 : w o r l d \0 include “” include “” int main(void ) { char str1[20], str2[20]。 gets(str2)。 strcpy(str1,str2)。 puts(str1)。 return 0。 } strcpy() 示例 1234 1234 strcat(str1, str2)。 連接兩個(gè)字符串 str1和 str2, 并將結(jié)果放入 str1中 字符串連接函數(shù) strcat include include int main(void) { char str1[80], str2[20]。 gets(str1)。 gets(str2)。 strcat(str1, str2)。 puts(str1)。 return 0。 } str1中: Let us \0 str2中: go.\0 str1中: Let us go.\0 str2中: go.\0 Let us go. Let us go. strcmp(str1, str2) 比較 兩個(gè)字符串 str1和 str2的大小。 規(guī)則:按字典序 (ASCII碼序 ) ?如果 str1 和 str2 相等,返回 0; ?如果 str1 大于 str2 , 返回一個(gè)正整數(shù); ?如果 str1 小于 str2 , 返回一個(gè)負(fù)整數(shù); static char s1[20] = sea。 字符串比較函數(shù) strcmp strcmp(s1, Sea)。 strcmp(Sea, Sea )。 strcmp(Sea, Sea)。 正整數(shù) 負(fù)整數(shù) 0 include “” include “” int main(void ) { int res。 char s1[20], s2[20]。 gets(s1)。 gets(s2)。 res = strcmp(s1, s2)。 printf(“%d”, res)。 return 0。 } strcmp() 示例 1234 5 4 利用字符串比較函數(shù)比較字符串的大小 strcmp(str1, str2)。 為什么定義這樣的函數(shù)? 用 strcmp()比較字符串 strcmp(str1, str2) 0 strcmp(str1, “hello”) 0 strcmp(str1, str2) == 0 str1 str2 str1 “hello” str1 == str2 比較字符串首元素的地址 比較字符串的內(nèi)容 ? strlen(str) 計(jì)算字符串的有效長(zhǎng)度,不包括 ‘ \0’ 。 static char str[20]=“How are you?” strlen(“hello”) 的值是: strlen(str) 的值是: 字符串長(zhǎng)度函數(shù) strlen 5 12 函數(shù) 功能 頭文件 puts(str) 輸出字符串 gets(str) 輸入字符串(回車間隔) strcpy(s1,s2) s2 == s1 strcat(s1,s2) s1 “+” s2 == s1 若 s1“==”s2, 函數(shù)值為 0 strcmp(s1,s2) 若 s1 “” s2, 函數(shù)值 0 若 s1 “” s2, 函數(shù)值 0 計(jì)算字符串的有效長(zhǎng)度, strlen(str) 不包括 ‘ \0’ 字符串處理函數(shù)小結(jié) int main( ) { int i。 int x, min。 scanf(%d, amp。x)。 min = x。 for(i = 1。 i 5。 i++){ scanf(%d, amp。x)。 if(x min) min = x。 } printf(min is %d\n, min)。 return 0。 } 例 816 求最小字符串 include int main( ) { int i。 char sx[80], smin[80]。 scanf(%s, sx)。 strcpy(smin,sx)。 for(i = 1。 i 5。 i++){ scanf(%s, sx)。 if(strcmp(sx, smin)0) strcpy(smin,sx)。 } printf(min is %s\n, smin)。 return 0。 } 2 8 1 99 0 min is –1 tool key about zoo sea min is about 任意個(gè)整數(shù)求和問題 * 例 817 先輸入一個(gè)正整數(shù) n, 再輸入任意 n個(gè)整數(shù),計(jì)算并輸出這 n個(gè)整數(shù)的和。 要求使用 動(dòng)態(tài)內(nèi)存分配方法 為這 n個(gè)整數(shù)分配空間。 程序解析 int main ( ) { int n, sum, i, *p。 printf(Enter n: )。 scanf(%d, amp。n)。 if ((p = (int *) calloc (n, sizeof(int))) == NULL) { printf(Not able to allocate memory. \n)。 exit(1)。 } printf(Enter %d integers: , n)。 for (i = 0。 i n。 i++) scanf(%d, p+i)。 sum = 0。 for (i = 0。 i n。 i++) sum = sum + *(p+i)。 printf(The sum is %d \n,sum)。 free(p)。 return 0。 } Enter n: 10 Enter 10 integers: 3 7 12 54 2 –19 8 –1 0 15 The sum is 81 用指針實(shí)現(xiàn)內(nèi)存動(dòng)態(tài)分配 ? 變量在使用前必須被定義且安排好存儲(chǔ)空間 ? 全局變量 、 靜態(tài)局部變量 的存儲(chǔ)是在 編譯時(shí)確定,在程序開始執(zhí)行前完成。 ? 自動(dòng)變量 ,在執(zhí)行進(jìn)入變量定義所在的復(fù)合語句時(shí)為它們分配存儲(chǔ),變量的大小也是靜態(tài)確定的。 ? 一般情況下,運(yùn)行中的很多存儲(chǔ)要求在寫程序時(shí)無法確定。 動(dòng)態(tài)存儲(chǔ)管理 ? 不是由編譯系統(tǒng)分配的,而是由用戶在程序中通過動(dòng)態(tài)分配獲取。 ? 使用動(dòng)態(tài)內(nèi)存分配能有效地使用內(nèi)存 ?使用時(shí)申請(qǐng) ?用完就釋放 同一段內(nèi)存可以有不同的用途 動(dòng)態(tài)內(nèi)存分配的步驟 ( 1) 了解需要多少內(nèi)存空間 ( 2) 利用 C語言提供的動(dòng)態(tài)分配函數(shù)來分配所需要的存儲(chǔ)空間 。 ( 3) 使指針指向獲得的內(nèi)存空間 , 以便用指針在該空間內(nèi)實(shí)施運(yùn)算或操作 。 ( 4)當(dāng)使用完畢內(nèi)存后,釋放這一空間。 動(dòng)態(tài)存儲(chǔ)分配函數(shù) malloc() void *malloc(unsigned size) 在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)中分配一連續(xù)空間,其長(zhǎng)度為size ?若申請(qǐng)成功,則返回一個(gè)指向所分配內(nèi)存空間的起始地址的指針 ?若申請(qǐng)內(nèi)存空間不成功,則返回 NULL( 值為 0) ?返回值類型: (void *) ? 通用指針的一個(gè)重要用途 ? 將 malloc的返回值轉(zhuǎn)換到特定指針類型,賦給一個(gè)指針 malloc()示例 /* 動(dòng)態(tài)分配 n個(gè)整數(shù)類型大小的空間 */ if ((p = (int *)malloc(n*sizeof(int))) == NULL) { printf(“Not able to allocate memory. \n”)。 exit(1)。 } ? 調(diào)用 malloc時(shí),用 sizeof 計(jì)算存儲(chǔ)塊大小 ? 每次動(dòng)態(tài)分配都要檢查是否成功,考慮例外情況處理 ? 雖然存儲(chǔ)塊是動(dòng)態(tài)分配的,但它的大小在分配后也是確定的,不要越界使用。 計(jì)數(shù)動(dòng)態(tài)存儲(chǔ)分配函數(shù) calloc () void *calloc( unsigned n, unsigned size) 在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)中分配 n個(gè)連續(xù)空間,每一存儲(chǔ)空間的長(zhǎng)度為 size, 并且分配后還把存儲(chǔ)塊里全部初始化為 0 ? 若申請(qǐng)成功,則返回一個(gè)指向被分配內(nèi)存空間的起始地址的指針 ? 若申請(qǐng)內(nèi)存空間不成功,則返回 NULL ? malloc對(duì)所分配的存儲(chǔ)塊不做任何事情 ? calloc對(duì)整個(gè)區(qū)域進(jìn)行初始化 動(dòng)態(tài)存儲(chǔ)釋放函數(shù) free void free(void *ptr) 釋放由動(dòng)態(tài)存儲(chǔ)分配函數(shù)申請(qǐng)到的整塊內(nèi)存空間,ptr為指向要釋放空間的首地址。 當(dāng)某個(gè)動(dòng)態(tài)分配的存儲(chǔ)塊不再用時(shí),要及時(shí)將它釋放 分配調(diào)整函數(shù) realloc void *realloc(void *ptr, unsigned size) 更改以前的存儲(chǔ)分配 ? ptr必須是以前通過動(dòng)態(tài)存儲(chǔ)分配得到的指針 ? 參數(shù) size為現(xiàn)在需要的空間大小 ? 如果調(diào)整失敗,返回 NULL,同時(shí)原來 ptr指向存儲(chǔ)塊的內(nèi)容不變。 ? 如果調(diào)整成功,返回一片能存放大小為 size的區(qū)塊,并保證該塊的內(nèi)容與原塊的一致。如果 size小于原塊的大小,則內(nèi)容為原塊前 size范圍內(nèi)的數(shù)據(jù);如果新塊更大,則原有數(shù)據(jù)存在新塊的前一部分。 ? 如果分配成功,原存儲(chǔ)塊的內(nèi)容就可能改變了,因此不允許再通過 ptr去使用它。
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1