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

正文內(nèi)容

程序設(shè)計(jì)基礎(chǔ)c語(yǔ)言中ppt-資料下載頁(yè)

2025-10-07 20:13本頁(yè)面
  

【正文】 int) *15)。 ? …… ? p = (int *) realloc (p, sizeof(int) * 5)。 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 74 內(nèi)存管理 ? free() ?函數(shù)原型 ? void free(void *ptr)。 ?例如: ? int * p = (int *) malloc(4)。 ? *p = 100。 ? free(p)。 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 75 動(dòng)態(tài)內(nèi)存分配應(yīng)用 ? 利用動(dòng)態(tài)內(nèi)存分配函數(shù)實(shí)現(xiàn)字符串的動(dòng)態(tài)分配。 include include include main() { char *s。 register int t。 if((s=malloc(50))==NULL) /*使用 malloc分配 50個(gè)字節(jié)動(dòng)態(tài)空間 */ { printf (內(nèi)存分配失敗 )。 exit (1)。 } gets(s)。 for (t=strlen(s)1。 t = 0。 t) putchar (s[t])。 /*反向打印 */ free (s)。 /* 釋放 */ } 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 結(jié)構(gòu)體、共用體與枚舉類型 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 78 ? C語(yǔ)言允許將一組邏輯上聯(lián)系的不同類型的數(shù)據(jù)組織起來(lái)作為一個(gè)整體使用 ? 保證了數(shù)據(jù)之間的內(nèi)在聯(lián)系 ? 用同一個(gè)名字引用的相關(guān)變量的集合 ? 提供了將相關(guān)信息組合在一起的一種手段 ? C語(yǔ)言提供了一種新的稱為結(jié)構(gòu)的構(gòu)造型數(shù)據(jù)類型 ? 概念 ? 結(jié)構(gòu)是一組相關(guān)的不同類型的數(shù)據(jù)的集合 ? 結(jié)構(gòu)類型為處理復(fù)雜的數(shù)據(jù)提供了便利的手段 ? 結(jié)構(gòu)體類型的變量可以擁有不同數(shù)據(jù)類型的成員 ? 是不同數(shù)據(jù)類型成員的集合 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 79 例如:學(xué)生成績(jī)表由下面的項(xiàng)目組成: 班級(jí) 學(xué)號(hào) 姓名 操作系統(tǒng) 數(shù)據(jù)結(jié)構(gòu) C程序設(shè)計(jì) 網(wǎng)絡(luò)工程 (字符串) (長(zhǎng)整) (字符串) (實(shí)型) (實(shí)型) (實(shí)型) (實(shí)型) 通訊錄有下列數(shù)據(jù)項(xiàng)組成: 姓名 工作單位 家庭住址 郵編 電話號(hào)碼 E_mail (字符串) (字符串) (字符串) (長(zhǎng)整) (字符串或長(zhǎng)整) (字符串) 成績(jī)表: struct score {char grade[20]; /*班級(jí) */ long number ; /*學(xué)號(hào) */ char name[20]; /*姓名 */ float os; /*操作系統(tǒng) */ float datastru; /*數(shù)據(jù)結(jié)構(gòu) */ float cprog; /*C語(yǔ)言程序設(shè)計(jì) */ float p; /*網(wǎng)絡(luò)工程 */ }; 通訊錄表: struct addr {char name[20]; /*姓名 */ char department[30]; /*部門 */ char f_address[50]; /*家庭住址 */ long box; /*郵編 */ long phone; /*電話 */ char [20]; /*Email*/ } ; 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 80 ? 結(jié)構(gòu)體與數(shù)組 ? 組成方式 ? 都是由若干分量組成的 ? 數(shù)組是由相同類型的數(shù)組元素組成 ? 結(jié)構(gòu)的分量可以是不同類型的 ? 結(jié)構(gòu)中的分量稱為結(jié)構(gòu)的成員 ? 訪問(wèn)方式 ? 數(shù)組中的分量(元素)是通過(guò)數(shù)組的下標(biāo) ? 訪問(wèn)結(jié)構(gòu)中的成員是通過(guò)成員的名字 ? 結(jié)構(gòu)體的成員可以分別引用 ? 利用結(jié)構(gòu)體可以組織復(fù)雜的緊湊的數(shù)據(jù)結(jié)構(gòu) ? 如:鏈表、隊(duì)列、堆棧和數(shù)等 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 81 ? 在程序中使用結(jié)構(gòu)之前, 必須做的工作 ? 定義結(jié)構(gòu)體類型 ? 建立一個(gè)可用于定義 結(jié)構(gòu)類型變量 的模型 ? 其組成的各個(gè)要素稱為結(jié)構(gòu)體的成員 ? 結(jié)構(gòu)的定義說(shuō)明了該結(jié)構(gòu)的組成成員,以及每個(gè)成員的數(shù)據(jù)類型 ? 變量在計(jì)算機(jī)中的存在格式 ? 定義結(jié)構(gòu)體變量 ? 要使用該結(jié)構(gòu)就必須說(shuō)明結(jié)構(gòu)類型的變量 ? 根據(jù)結(jié)構(gòu)體類型為所定義的變量分配內(nèi)存空間 ? 提示 ? 不同的問(wèn)題有不同數(shù)據(jù)成員,即不同描述的結(jié)構(gòu)體類型 ? 可以理解為結(jié)構(gòu)體類型根據(jù)所針對(duì)的問(wèn)題不同而使得其結(jié)構(gòu)體的成員是不同的 ? 可以有任意多的結(jié)構(gòu)體類型描述 ? 使得 C語(yǔ)言可以解決的問(wèn)題范圍擴(kuò)大 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 82 ? 結(jié)構(gòu)定義的形式 ? 說(shuō)明 ? struct為關(guān)鍵字 ? 結(jié)構(gòu)的標(biāo)識(shí)符 ? 結(jié)構(gòu)類型名稱是所定義的結(jié)構(gòu)的類型標(biāo)識(shí) ? 由用戶自己定義 ? { }中包圍的是組成該結(jié)構(gòu)的成員項(xiàng) ? 每個(gè)成員的數(shù)據(jù)類型既可以是簡(jiǎn)單的數(shù)據(jù)類型,也可以是復(fù)雜的數(shù)據(jù)類型 ? 整個(gè)定義作為一個(gè)完整的語(yǔ)句用分號(hào)結(jié)束 ? 提示 ? 結(jié)構(gòu)體類型的說(shuō)明只是列出了該結(jié)構(gòu)的組成情況 ? 標(biāo)志這種類型的結(jié)構(gòu)模式已存在 ? 編譯系統(tǒng)并沒(méi)有因此而分配存儲(chǔ)空間 struct 結(jié)構(gòu)類型名稱 {數(shù)據(jù)類型 成員名 1。 數(shù)據(jù)類型 成員名 2。 …… 數(shù)據(jù)類型 成員名 n。 }。 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 83 ? 結(jié)構(gòu)定義的形式 ?例 ? 當(dāng)一個(gè)成員項(xiàng)是一個(gè)結(jié)構(gòu)體時(shí),就形成了結(jié)構(gòu)體的嵌套 ? 在數(shù)據(jù)處理時(shí)有時(shí)要用到結(jié)構(gòu)體嵌套處理組織復(fù)雜的數(shù)據(jù)集合 ?常見(jiàn)的錯(cuò)誤是忘記終止結(jié)構(gòu)定義的“;” 例:定義一個(gè)日期結(jié)構(gòu)體類型 struct date { int year; int mouth; int day;}; 例:定義一個(gè) teacher 類型的結(jié)構(gòu)體 struct date { int year; int mouth; int day; }; strcut teacher { char name[20] ; struct date birthday; char depart[20] ; }; 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 84 ? 結(jié)構(gòu)定義的形式 ? 提示 ? 結(jié)構(gòu)體必須有 struct開(kāi)始 ? 結(jié)構(gòu)體的成員可以是基本數(shù)據(jù)類型,也可以是數(shù)組和其它結(jié)構(gòu)類型的變量 ? 結(jié)構(gòu)體不能遞歸定義 ? 在結(jié)構(gòu)體類型說(shuō)明中不能有該結(jié)構(gòu)體變量 ? 允許有指向該結(jié)構(gòu)體的指針成員(自引用結(jié)構(gòu)) ? 結(jié)構(gòu)的定義可以在一個(gè)函數(shù)的內(nèi)部,也可以在所有函數(shù)的外部 ? 在函數(shù)內(nèi)部定義的結(jié)構(gòu),僅在該函數(shù)內(nèi)部有效 ? 定義在外部的結(jié)構(gòu),在所有函數(shù)中都可以使用 ? 定義結(jié)構(gòu)體類型后可以定義該結(jié)構(gòu)體類型的變量 ? 通過(guò)變量使用該結(jié)構(gòu),以對(duì)不同變量的成員進(jìn)行引用 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 85 ? 結(jié)構(gòu)體變量 ? 定義的形式 ? struct 結(jié)構(gòu)類型名稱 結(jié)構(gòu)變量名; ? 說(shuō)明 ? 說(shuō)明結(jié)構(gòu)變量的作用類似于說(shuō)明一個(gè)類型變量一樣 ? 系統(tǒng)為所說(shuō)明的結(jié)構(gòu)變量按照結(jié)構(gòu)定義時(shí)組成分配存儲(chǔ)數(shù)據(jù)的實(shí)際內(nèi)存單元 ? 結(jié)構(gòu)變量的成員在內(nèi)存中占用連續(xù)存儲(chǔ)區(qū)域,所占內(nèi)存大小為結(jié)構(gòu)中每個(gè)成員的長(zhǎng)度之和 ? 例: struct date { int year; int mouth; int day; }; struct date today, days[20], *day; struct 結(jié)構(gòu)類型名 { 成員 1類型標(biāo)識(shí) 成員 1名; 成員 2類型標(biāo)識(shí) 成員 2名; … 成員 n類型標(biāo)識(shí) 成員 n名; } ; struct 結(jié)構(gòu)體類型名 結(jié)構(gòu)體變量列表; 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 86 ? 結(jié)構(gòu)體變量 ? 提示 ? 在程序中,結(jié)構(gòu)的定義要先于結(jié)構(gòu)變量的說(shuō)明 ? 不能用尚未定義的結(jié)構(gòu)類型對(duì)變量進(jìn)行說(shuō)明 ? 結(jié)構(gòu)的定義和說(shuō)明可以同時(shí)進(jìn)行 ? 被說(shuō)明的結(jié)構(gòu)變量可直接在結(jié)構(gòu)定義的“ }”后給出 ? 例如說(shuō)明結(jié)構(gòu)變量 today可以使用下面的語(yǔ)句 struct date { int year, month, day。 } today。 ? 使用 sizeof計(jì)算一個(gè)結(jié)構(gòu)變量占用內(nèi)存的實(shí)際大小 ? 使用的一般形式為: sizeof(變量或類型說(shuō)明符 ) 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 87 ? 結(jié)構(gòu)體變量 ? 提示 ? 結(jié)構(gòu)體類型與結(jié)構(gòu)體變量是兩個(gè)不同的概念 ? 編譯系統(tǒng)不為結(jié)構(gòu)體類型分配內(nèi)存空間,只為結(jié)構(gòu)體變量分配內(nèi)存空間 ? 內(nèi)存的大小依據(jù)結(jié)構(gòu)體類型的定義(結(jié)構(gòu)體類型的變量占內(nèi)存長(zhǎng)度不定長(zhǎng)) ? 結(jié)構(gòu)體中的成員名可以和程序中的其他變量同名,互不影響,也可以與結(jié)構(gòu)變量名相同 ? 但應(yīng)盡量避免在不同的結(jié)構(gòu)中使用相同的結(jié)構(gòu)名 ? 雖然允許,但會(huì)造成混淆 ? 結(jié)構(gòu)體變量的成員(域)可以單獨(dú)使用(相當(dāng)于基本變量) ? 成員也可以是指向本結(jié)構(gòu)體類型的指針 struct teacher { char name[20] ; int age; char sex; char depart[20] ; struct teacher *next; }; 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 88 ? 結(jié)構(gòu)成員的引用 ?結(jié)構(gòu)作為若干成員的集合是一個(gè)整體 ? 可對(duì)結(jié)構(gòu)整體進(jìn)行操作 ? 可訪問(wèn)結(jié)構(gòu)中的每個(gè)成員 ?使用結(jié)構(gòu)中成員的方法 ? 結(jié)構(gòu)變量名 .成員名稱 ?運(yùn)算符“ .”的含義是訪問(wèn)結(jié)構(gòu)中的成員 ?“ .”操作的優(yōu)先級(jí)最高 ?結(jié)合性為從左到右 ? 指針變量名 成員名 ?在結(jié)構(gòu)體指針變量情況下使用運(yùn)算符“ ” 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 89 ? 結(jié)構(gòu)成員的引用 ? 例 ? 對(duì)于結(jié)構(gòu)體變量 today ? 有效的結(jié)構(gòu)體成員是 year, month, day ? , , today的合法引用 ? 打印 today的成員 year printf(“ %d” , ); ? 將 today的成員 month置為 12 =12; struct date { int year; int month; int day; } today, tomorrow ; 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 90 ? 結(jié)構(gòu)成員的引用 ? 提示 ? 結(jié)構(gòu)的成員可以象一般變量一樣參與各種操作和運(yùn)算 ? 進(jìn)行結(jié)構(gòu)變量的整體操作就有很多限制 ? 由于結(jié)構(gòu)中各個(gè)成員的邏輯意義不同,類型不同,對(duì)結(jié)構(gòu)變量整體的操作的物理意義不是十分明顯 ? C語(yǔ)言中能夠?qū)Y(jié)構(gòu)進(jìn)行整體操作的運(yùn)算只有賦值“ =”和取地址“ amp?!辈僮? ? 例如: struct date day1={ 1999,10,12}; struct date day2; day2= day1; /*將 day1的所有成員值賦值給 day2; */ ? 可以引用結(jié)構(gòu)體成員的地址也可以引用結(jié)構(gòu)體變量的地址 ? 主要作用于函數(shù)的參數(shù)傳遞(傳遞結(jié)構(gòu)體的地址) 程序設(shè)計(jì)基礎(chǔ)( C語(yǔ)言) 91 ? 結(jié)構(gòu)成員的引用 ?提示 ? C語(yǔ)言不允許將兩個(gè)結(jié)構(gòu)體變量整體比較,只能是逐個(gè)成員之間進(jìn)行比較 ? 例如 struct date d1={ 1994, 11, 20}, d2; d2=d1; =7; if (( = = )amp。amp。( = = ) amp。amp。(
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1