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

正文內(nèi)容

實用c語言程序設(shè)計教程6便捷工具指針ppt(已修改)

2024-10-30 13:51 本頁面
 

【正文】 第 6章 便捷工具 ——指針 C語言程序設(shè)計 Programming in C C語言程序設(shè)計 第 6章 指針 —— 思考與實用的結(jié)合,就能產(chǎn)生明確的概念,就能找到一些簡便方法,這些方法的發(fā)現(xiàn)激勵著自尊心,而方法的準(zhǔn)確性又能使智力得到滿足,原來枯燥無味的工作,有了簡便方法,就令人感到興趣了。 C語言程序設(shè)計 第 6章 指針 理解變量指針和地址 理解數(shù)組指針的概念、定義和運算 應(yīng)用指針運算符 amp。和 *等 通過指針訪問數(shù)組元素、字符數(shù)組 理解指針和數(shù)組間的關(guān)系 理解并應(yīng)用函數(shù)引用中的指針 理解二級指針與指針數(shù)組 理解動態(tài)內(nèi)存分配 本章教學(xué)目標(biāo) C語言程序設(shè)計 第 6章 指針 教學(xué)重點和難點 重點 ? 指針與數(shù)組 ? 指針數(shù)組 難點 ? 指針數(shù)組 ? 通過指針訪問數(shù)組元素 C語言程序設(shè)計 第 6章 指針 本章內(nèi)容 指針的基本操作與運算 利用指針訪問數(shù)組 指針數(shù)組 指針與函數(shù) 動態(tài)內(nèi)存分配 C語言程序設(shè)計 第 6章 指針 以 更 簡 潔的 方 式 引 用大 的 數(shù) 據(jù)結(jié) 構(gòu) ( data structure) 。 數(shù)據(jù)元素相互之間的關(guān)系稱為結(jié)構(gòu) ( structure) 。 數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合 。 數(shù)據(jù)結(jié)構(gòu)一般包括三個方面:數(shù)據(jù)的邏輯結(jié)構(gòu) 、 數(shù)據(jù)的存儲結(jié)構(gòu)以及對數(shù)據(jù)的基本操作 。 程序中的數(shù)據(jù)無論如何增長 , 總是位于計算機的內(nèi)存中 , 因此 , 必然會有地址 。 指針可以把地址作為一個完整數(shù)據(jù)值的速記符號 。 C語言中指針的重要用途: C語言程序設(shè)計 第 6章 指針 指針使程序的不同部分 ( 或函數(shù) ) 能共享數(shù)據(jù) 。 利用指針 , 能在程序執(zhí)行過程中預(yù)留新的內(nèi)存空間 。到現(xiàn)在為止 , 在程序中能使用的內(nèi)存是通過顯式定義分配給變量的內(nèi)存 。 在許多應(yīng)用中 , 如果程序能在運行時獲得新的內(nèi)存空間 , 并讓指針指向這一內(nèi)存則更為方便 。 指針可用來記錄數(shù)據(jù)項之間的關(guān)系 。 在高級語言程序設(shè)計中應(yīng)用中 , 指針被廣泛用于構(gòu)造單個數(shù)據(jù)值之間的聯(lián)系 。 比如 , 程序員通常在第一個數(shù)據(jù)的內(nèi)部表示中包含指向下一個數(shù)據(jù)項的指針 , 來說明這兩個數(shù)據(jù)之間有概念上的順序關(guān)系 。 C語言程序設(shè)計 第 6章 指針 本章項目任務(wù) 利用指針,編程實現(xiàn)“ 學(xué)生信息管理系統(tǒng) ” 中學(xué)生成績的管理。 C語言程序設(shè)計 第 6章 指針 指針的基本操作與運算 指針的基本運算和操作 多級指針概念與地址關(guān)系 指針變量就是存放某個地址的變量,指針的值是地址。 程序中通常并不直接指出或使用內(nèi)存地址,因為地址的使用和系統(tǒng)有關(guān),每次運行程序時內(nèi)存地址都可能會發(fā)生改變。 常用指針來間接尋址內(nèi)存數(shù)據(jù)。 C語言程序設(shè)計 第 6章 指針 指針的基本運算和操作 1.指針賦值 2.指針運算 3.文件指針變量的使用 C語言程序設(shè)計 第 6章 指針 1.指針賦值 例如: int *p。 /*定義一個指向整型數(shù)據(jù)的指針變量 p*/ ?在程序中若想使用該指針變量,必須先對其賦值,使其指向某個地址。 方式 1: 指針變量名 =amp。變量名; 方式 2: 指針變量名 =另一已經(jīng)賦值的指針變量; 指針變量名 =指針常量; 指針賦值有以下方式: C語言程序設(shè)計 第 6章 指針 include void main( ) { unsigned c[10]={1,2,3,4,5,6,7,8,9,0},a=16。 unsigned *p=amp。a /*方式 1, *將變量 p說明為指針變量 */ unsigned *p1=c。 /*方式 2*/ printf(%u %u\n,a,amp。a)。 printf(%u %u\n,p,amp。p)。 printf(%u\n,c)。 printf(%u %u\n,p1,amp。p1)。 printf(“%d\n”,*p)。 /* 運算符 *,表示取指針 p所指向的內(nèi)容 */ /* 通過 p間接存取變量 a的值 */ printf(%u\n,*p1)。 } 【 例 61】 閱讀并理解程序中變量、地址和指針之間的關(guān)系。 C語言程序設(shè)計 第 6章 指針 C語言程序設(shè)計 第 6章 指針 注意: ?使用沒有初始化的指針會產(chǎn)生不可預(yù)料后果??捎?“ 空 ” 值初始化避免這種現(xiàn)象。 ?將 0賦給指針變量,不能理解為將 0地址賦給指針變量,說明該指針變量目前不指向任何變量或地址。 例: int *p=NULL,*pm1,*pm2。 pm1=0。 pm2= 39。\039。 pm1 pm2 p 圖 63 “空指針值”的表示 C語言程序設(shè)計 第 6章 指針 ( 1) amp。 :取內(nèi)存地址,單目運算符 ( 2) *:間接訪問內(nèi)存,單目運算符 ( 3) +/:加法 /減法運算符,雙目運算符 ( 4) ++/:增 1/減 1運算符,單目運算符 ( 5)關(guān)系運算符: ,=,=,==,!= 2.指針運算( Pointer Arithmetic) ?指針值的集合是地址空間編碼。 在這個集合上可進(jìn)行操作運算,所用的指針運算符有: C語言程序設(shè)計 第 6章 指針 ?指針移動運算 通過對指針變量進(jìn)行加、減運算實現(xiàn)對指針變量的重新定值,使指針指向不同的存儲單元。指針移動運算的限制條件為: ① 指針只能在相同數(shù)據(jù)類型的連續(xù)空間內(nèi)移動; ② 指針移動的內(nèi)存單位是基數(shù)據(jù)類型的邏輯單位,而不是字節(jié)單位。 主要運算形式有: ①指針變量 +/整型表達(dá)式 ②整型表達(dá)式 +指針變量 ③ ++/指針變量或指針變量 ++/ ④ 指針變量 1指針變量 2 C語言程序設(shè)計 第 6章 指針 例:假設(shè)指針變量 p、 q是同類型指針,且指向同一數(shù)據(jù)集合(數(shù)組), n是整型常量或變量,則指針變量p、 q支持如下五種算術(shù)運算: ①后置自加運算: p++; /*p作為當(dāng)前操作數(shù),然后后移一個元素 */ ② 后置自減運算: p; /*p作為當(dāng)前操作數(shù),然后前移一個元素 */ ③ 前置自加運算: ++p; /*p后移一個元素,然后作為當(dāng)前操作數(shù) */ ④ 前置自減運算: p; /*p前移一個元素,然后作為當(dāng)前操作數(shù) */ ⑤ 加整型量: p+n; /*取得 p之后第 n個元素的地址 */ ⑥ 減整型量: pn; /*取得 p之前第 n個元素的地址 */ ⑦ 同類指針相減: pq; /*表示 p和 q兩者之間的元素個數(shù) */ C語言程序設(shè)計 第 6章 指針 圖 64 指針變量的移動運算 數(shù)組 指針 C語言程序設(shè)計 第 6章 指針 【 例 62】 閱讀程序。注意指針變量的移動。 include void main( ) { int a[10]={54,65,8,2,3,56,8,21,57,98},*p, i。 p=a。 for(i=0。i10。i++) printf(%4d, *p++ )。 printf(\n)。 } C語言程序設(shè)計 第 6章 指針 如果 p指向 a數(shù)組中第 i個元素,則: ?*p相當(dāng)于 *(p)或 a[i],先對 p進(jìn)行“ *”運算,再使 p自減。 ?*p相當(dāng)于 *(p) 或 a[i],先對 p自減,再作 *運算。 ?*++p相當(dāng)于 *(++p)或 a[++i],先對 p自加,再作 *運算。 ?*p++相當(dāng)于 *(p++)或 a[i++],先對 p進(jìn)行“ *”運算,再使 p自加。 ?(*p),先取 *p的值,再將此值自減。 ?(*p),先將 *p的值自減,再取 *p的值。 ?(*p)++,先取 *p的值,再將此值自加。 ?++(*p),先將 *p的值自加,再取 *p的值。 C語言程序設(shè)計 第 6章 指針 ? 關(guān)系運算 只有當(dāng)兩個指針變量指向同一個連續(xù)的存儲空間時,才能進(jìn)行關(guān)系運算。 ? 判斷兩個指針是否指向同一個存儲單元: p==q; /*當(dāng) p和 q指向同一元素時,表達(dá)式的值為 1;反之為 0*/ p!=q; /*當(dāng) p和 q不指向同一元素時,表達(dá)式的值為 1;反之為 0*/ C語言程序設(shè)計 第 6章 指針 ?判斷不同指針?biāo)赶虻拇鎯卧g的位置關(guān)系: pq /*當(dāng) p所指的元素在 q所指的元素之前時,表達(dá)式的值 為 1;反之為 0。 */ pq /*當(dāng) p所指的元素在 q所指的元素之后時,表達(dá)式的值 為 1;反之為 0。 */ C語言程序設(shè)計 第 6章 指針 【 例 63】 利用指針的移動和比較運算,求數(shù)組 int a[10]的 10個元素之和。 算法思想: 設(shè)置指針 p和 q分別指向 數(shù)組的首和尾 ;通過首指針向后或尾指針向前移動,直到首、尾指針相等,即遍歷了整個數(shù)組,從而實現(xiàn)對數(shù)組的操作。 C語言程序設(shè)計 第 6章 指針 include void main() { int s=0, a[10], *p, *q。 for( p=a+9, q=a。 p=q。 p ) scanf(%d,p)。 q=a+9。 p=a。 while( p=q ) { s+=*p。 ++p。 } printf(sum=%d\n,s)。 } C語言程序設(shè)計 第 6章 指針 【 例 64】 利用指針移動和比較運算,編寫程序?qū)⒁粋€字符串逆置。要求在同一個數(shù)組中實現(xiàn)字符串逆置。 算法思想: 設(shè)置 s和 p兩個指針分別指向 串首和串尾 (不是數(shù)組的首和尾),交換它們對應(yīng)的字符; 然后 s和 p分別向字符串中間移動,并同時交換對應(yīng)位置的字符; 直到 s與 p指向相同位置或 s指向 p后的位置。 include include void main( ) { char str[50],*p,*s,c。 printf(Enter string:)。 gets(str)。 p=s=str。 /*指針 p和 s同時指向 str */ while(*p) p++。 /*找到串結(jié)束標(biāo)記 39。\039。 */ p。 /*指針回退一個字符,指向字符串中的最后一個字符 */ /*以上語句使 s和 p分別指向串首和串尾 */ while(sp) /*指針比較, s在 p之前時,進(jìn)行循環(huán)交換 */ { c=*s。 /*交換兩個指針?biāo)赶虻淖址? */ *s++=*p。 /*串前面的指針 s向后( +1)移動 */ *p= c。 /*串后面的指針 p向前( 1)移動 */ } puts(str)。 } C語言程序設(shè)計 第 6章 指針 3.文件指針變量的使用(選講) ?使用文件指針來訪問數(shù)據(jù)文件。 ?指向文件的指針使用 FILE來進(jìn)行聲明定義。 例: FILE *sensor; sensor=fopen(“”,“r”)。 /*文件指針變量賦值 */ fscanf(sensor,“%f %f”,amp。t,amp。motion)。 /*使用該文件指針 */ C語言程序設(shè)計 第 6章 指針 【 例 65】 閱讀并理解程序中的文件指針,深入學(xué) 習(xí)相應(yīng)的文件讀寫函數(shù)等。 include include void main( ) { FILE *fp。 /*建立文件指針 fp*/ int i, k, n。 if ( (fp=fopen(,w+)) ==NULL) { printf(Open error\n)。 exit(0)。 } for (i=1。i6。i++) fprintf(fp, “%d \n,i)。 r
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1