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

正文內(nèi)容

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

2024-11-09 20:13 上一頁面

下一頁面
 

【正文】 向何處 ?系統(tǒng)在執(zhí)行程序時會給出如下的信息 ? runtime error R6001——null pointer assigment ?或者引起更嚴重的錯誤 ——系統(tǒng)崩潰 ? 對未使用的指針應該賦以空值 NULL ?表明它未指向任何地方 ?這并不是對指針的初始化 ?只是 表示該指針未被使用而已 程序設計基礎( C語言) 17 ? 指針變量初始化 ? 提示 ? 一個指針變量賦空值與不賦值是完全不同的概念 ? 前者是有不指向任何變量的地址 ? 后者是一個不確定的隨機值 ? 這時指針可能指向一個事先未指定的數(shù)據(jù) ? 利用空指針可以簡化程序代碼、提高效率 ? 指針變量應具有無符號整型類型的值 ? 存放的是地址 ? 由于地址本身的特征,不能將一個整型值賦給一個指針變量。i; ? 問題? ? 寫成 int *pa。 /* 說明指針變量 pa和變量 a */ pi=amp。 /* 通過變量名訪問變量 n */ ? 間接訪問 ? 如果將變量 n的地址存放在另一個變量 pn中,通過訪問變量 pn,間接達到訪問變量 i的目的,這種方式稱為變量的 間接訪問 ? 在 C語言中,間接尋址方式訪問內(nèi)存是通過指針變量實現(xiàn)的 ? 指針變量通過直接尋址方式訪問獲得的是一個地址值 ? 在該地址起始的一個存儲單元中存放程序需要的數(shù)據(jù) 1010 2021 2021 1010 300 1012 程序設計基礎( C語言) 10 ? 定義 ? 用于指向其他變量的變量 ? 指針變量是一個變量 ? 和普通變量一樣占用一定的存儲空間 ? 該存儲空間存放的是一個 地址值而 不是 普通的數(shù)據(jù)值 ? 指針變量是一個 地址 變量 ? 指針變量的值是一個內(nèi)存單元的地址 ? 它指向另一個變量的值 ? 指針就是地址 ? 當將變量的地址存入指針變量后,就說 這個指針指向了該變量 ? 指針變量只能存放某一數(shù)據(jù)類型的變量 ? 問題? ? 變量的類型和指向變量的類型之間的區(qū)別? 程序設計基礎( C語言) 11 ? 指針變量的聲明 ? 指針變量與一般的變量的區(qū)別 ? 格式 數(shù)據(jù)類型名 *指針變量名; ? 說明 ? 數(shù)據(jù)類型表示指針所 指向的數(shù)據(jù) 的數(shù)據(jù)類型 ? 提示:不是指針變量的數(shù)據(jù)類型 ? *是指針的標志,表示它后面的變量名是指針類型 ? 例 ? int *i_p; /*定義了指針變量 i_p ,指向的對象類型為整型 */ ? char *cp; /*定義了指針變量 cp, 指向的對象類型為字符型 */ 程序設計基礎( C語言) 12 ? 指針變量的聲明 ? 提示 ? 聲明語句的 *只能用于指針變量 ? 這種表示方式說明被聲明的變量是一個指針 ? *不針對聲明語句中的所有變量 ? 每一個指針都必須在其名字前面有一個前綴 *聲明 ? 例如: int *pt1, pt2; ? pt2為整型變量而不是整型指針變量 ? 指針變量名是 pt1而不是 *pt1 ? 指針變量只能指向定義時規(guī)定的類型變量 ? 只有同一數(shù)據(jù)類型的地 址才能存放在指向該類型變量的指針變量中 ? 例如: int *ip; /*ip指針變量只能存放整型變量的地址 */ 程序設計基礎( C語言) 13 ? 指針變量的聲明 ? 提示 ? 在定義指針時可以用 void將指針定義為空類型 ? 不指定指針指向一個確定的類型 ? 區(qū)分“值”與“內(nèi)容”的含義 ? 例如 ? 整型變量是內(nèi)容為 整型數(shù)值 的變量 ? 整型指針變量是存放整型變量 地址 的變量 ? 在引用指針變量前必須首先讓指針指向一個變量 ? 這一點非常重要 ? 定義指針變量后,并未確定該變量指向何處,該變量的值是不確定的 指針 P 指針變量 p的地址 內(nèi)存單元 程序設計基礎( C語言) 14 ? 指針變量初始化 ? 在使用指針變量時,要首先對指針變量進行初始化,讓指針變量指向一個具體的變量 ? 初始化的方式 ? 使用賦值語句 ? 例 ? int i, *pi。把變量 i的 地址 賦值給指針變量: pi指向了整型變量 i */ ? 說明指針變量的時候同時進行 ? 例: 使用 先聲明變量 的地址 ? int i, *pi=amp。會出現(xiàn)什么問題? 程序設計基礎( C語言) 15 ? 指針變量初始化 ? 在使用指針變量時,要首先對指針變量進行初始化,讓指針變量指向一個具體的變量 ? 初始化的方式 ? 給指針變量賦空值(賦值為符號常量 NULL ) ? 例 ? p=NULL。 C 程序設計基礎( C語言) 19 ? 指針變量的運算 ? C語言提供的指針運算 ? 取地址運算( amp。x /* amp?!笔侨〔僮鲗ο蟮牡刂范皇瞧渲? 程序設計基礎( C語言) 20 ? 指針變量的運算 ? C語言提供的指針運算 ? 取內(nèi)容運算( *) ? 運算對象必須是指針(該指針所指向的對象可以是任意類型) ? 作用是取指針所指向變量的內(nèi)容。a。/*在函數(shù)中直接使用變量 a的地址 */ ? 通過指向變量的指針間接引用 ? 利用指針變量,提供對變量的一種“間接訪問”形式 ? 指針變量的引用形式 *指針變量 ? 含義是指針變量所指向的值 ? 例如 ? int a=3,*pa。 /* 通過 * 運算符實現(xiàn)間接訪問 */ 程序設計基礎( C語言) 22 ? 指針變量的引用 ?例 :用指針變量進行輸入輸出 main() { int *p, m; scanf( “ %d”, amp。請思考一下若將程序修改為如下形式: main() { int *p, m; scanf( “ %d”, p ); p=amp。a。 printf(“Proving that * and amp。*aptr,*amp。j; p2=p1; printf( “ *p1=%d; *p2=%d\n” , *p1, *p2); printf( “ i=%d; j=%d\n” , i, j); printf( “ p1=%p, p2=%p\n”, p1, p2); } 本題中若 *p2=*p1? 將 p1指向變量的值傳遞給 * p2的內(nèi)存單元。用于求任一類型變量的指針,求出的指針具有對應的類型 ? *和指針一起使用時被認為是同類型的一個變量 ? 可以參與該類型變量的一切運算 ? *和 amp。 /* 通過下標將第 1個元素的值賦給 x=1 */ 程序設計基礎( C語言) 27 ? 指針和數(shù)組緊密聯(lián)系 ? 對數(shù)組元素的訪問可以通過指針和借助數(shù)組元素下標的方法實現(xiàn) ? 凡是由數(shù)組下標完成的操作皆可用指針來實現(xiàn) ? 指針最常見的一種用途就是指向數(shù)組元素 ? 當一個指針指向數(shù)組后,就可以靈活快速地處理數(shù)組元素,從而體現(xiàn)出指針的優(yōu)點 ? “指針方式”訪問數(shù)組中的元素 ? 一個數(shù)組( /數(shù)組元素)有相應的地址,可以將數(shù)組的起始地址或某一個數(shù)組元素的地址放到一個指針變量中 ? 數(shù)組的指針就是數(shù)組的起始地址(數(shù)組名),既數(shù)組第一個元素的地址( amp。a[0]。 y=pt[4]。a[0];或 p=a; 則 p就指向了數(shù)組 a的首址 ? 當 p指向了一維數(shù)組 a,指針對數(shù)組元素可以表示: ? p+n與 a+n( n (偏移量)的取值為 0~ 9 )表示數(shù)組元素 a[n]的地址,既 amp。 char str3[10],*str4=“boys and girls”。 printf(“str3=%s\n”,str3)。s1[i]=s2[i]。 /*函數(shù)體中沒有任何動作 */ } 程序設計基礎( C語言) 33 ? 指針和數(shù)組的可替代性 ?數(shù)組的表示法 ? 數(shù)組 /下標 ? 指針 /偏移量 ?利用 *p、 *( p+1)、來代表數(shù)組 a[0]、 a[1] ? 數(shù)組 /偏移量 ?對數(shù)組的引用以 *a、 *( a+ 1)、代替 a[0]、 …a[9] ? ? 指針 /下標 ?表達式 p[1]引用了數(shù)組元素 a[1] 程序設計基礎( C語言) 34 【 例 1 】 采用指針 /偏移量表示的地址法輸入輸出數(shù)組元素。n++) scanf( “ %d”,pa+n) 。 printf( “ \n”) 。n=9。n++) printf( “ %d”,*( a+n)) 。 for (n=0。 for( n=0。 } 【 例 4】 采用數(shù)組 /下標法輸入輸出數(shù)組元素。n++) scanf( “ %d”,amp。n++) printf( “ %d”,a[n]) 。a[0] ;) p+i a[10] a[0] a[1] … a[i] … a[9] p pi a[10] a[0] a[1] … a[i] a[9] 2021 2021 2021 200+2*i … 2021 p ? 指針的運算 ?指針與正整數(shù)的加減運算 ? 自增 /自減 ?指針的自增( ++) /自減( )運算分別表示將指針移動到下一個 /上一個存儲單元并指向新的數(shù)據(jù) ?p++的含義 ?指針加1,指向數(shù)組中的下一個元素 ? p的含義 ?指針減1,指向數(shù)組中的前一個元素 main() { int *prt; int arrary[]={ 2,4,6,8,10}; prt=array; prt+=3; prt; prt=2; prt++; } 96。 int *p=x。 int *p=a。 char *str3=“\n”。 } main() {char *str=“A string! \n”。) printf(“%c”,*(str++))。x1, amp。 p1=p2。a,amp。a,amp。 } exchange(p1,p2,p3) int *p1,*p2,*p3。 } void swap ( int *p1, int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; } 程序設計基礎( C語言) 66 ? 指針作為函數(shù)的參數(shù) ?例: 用傳址方法將字符串中的小寫字母轉(zhuǎn)換為大寫字母 。 convtoupper(string)。*s=?z?) *s=32。 程序設計基礎( C語言) 69 例:指出下面程序的輸出結(jié)果。b,c)。 } A)1,2,3,0 B)2,3,3,2 C)2,2,3,2 D)有語法錯誤,無輸出結(jié)果 ? 程序設計基礎( C語言) 70 內(nèi)存管理 ? C語言的內(nèi)存分配有三種方式,即靜態(tài)分配、動態(tài)分配以及在棧上創(chuàng)建。 int *pi。 ?例如: ? int *pi。 ?例如: ? int* p = (int *) malloc (sizeof(int) * 10)。 ?例如: ? int * p = (int *) malloc(4)。 include include include main() { char *s。 } gets(s)。 /*反向打印 */ free (s)。 }?!辈僮? ? 例如: struct date day1={ 1999,10,12}; struct date day2; day2= day1; /*將 day1的所有成員值賦值給 day2; */ ? 可以引用結(jié)構(gòu)體成員的地址也可以引用結(jié)構(gòu)體變量的地址 ? 主要作用于函數(shù)的參數(shù)傳遞(傳遞結(jié)構(gòu)體的地址) 程序設計基礎( C語言) 91 ? 結(jié)構(gòu)成員的引用 ?提示 ? C語言不允許將兩個結(jié)構(gòu)體變量整體比較,只能是逐個成員之間進行比較 ? 例如 struct date d1={ 1994, 11, 20}, d2; d2=d1; =7; if (( = = )amp。(
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1