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

正文內容

[理學]c語言第7章(已修改)

2025-01-31 14:41 本頁面
 

【正文】 第 7章 指針 3 知識回顧-計算機的主要工作流程 10101011 01011011 11110111 … 00111011 11000101 10001111 CPU(中央處理器 ) 4 內存的組織結構 ? 內部存儲器,是由存儲單元組成的。它的特點是存儲單元是線性連續(xù)的。存儲單元的最小單位是字節(jié)。 5 如何找到要存儲的數據? ? 為了訪問內存中的某個存儲單元,我們?yōu)槊恳粋€內存的基本存儲單元編號,通過這個編號就可以訪問該單元所存放的數據內容。這種編號稱為內存地址。 6 變量與地址的關系 ? 系統(tǒng)給變量分配內存單元,變量在內存中可能會占用幾個連續(xù)的字節(jié),開始字節(jié)的內存單元的地址,就是變量的地址。 2022 7 ? 指針:一個變量的地址稱為該變量的指針。 ? 指針變量:若一個變量專用于存放另一個變量的地址(指針),則該變量稱為指針變量。 8 …... …... 2022 2022 2022 2022 整型變量 i 5 變量 i_pointer 2022 2022 2022 2022 指針 指針變量 變量的內容 變量的地址 指針變量 變量 變量地址 (指針 ) 變量值 指向 地址存入 指針變量 9 ?直接訪問與間接訪問 直接訪問:按變量直接存取變量值 間接訪問:通過存放變量地址的變量去訪問變量 例 i=3。 直接訪問 指針變量 …... …... 2022 2022 2022 2022 整型變量 i 10 變量 i_pointer 2022 2022 2022 2022 3 例 *i_pointer=5。 間接訪問 5 *表示指向 ,若 p指向 i,p中存放 i的地址 ,*p表示 p指向的變量 . 3 i *p p 類型名 *指針變量名 其中 :① *不能省 。 ② 類型名 為指針變量指向變量的類型 . 例 : int i, *ip。 char ch, *cp。 float f, *fp。 例 : int i,*ip。 ip=amp。i。 char ch, *cp。 cp=amp。ch。 float f, *fp。 fp=amp。f。 注 :① 一個指針變量只能指向同一個類型的變量 ,必須定義其類型 . ② 指針變量只能存放地址 . ip i *ip cp ch *cp fp f *fp 2022 3000 4000 注意 : ?指針變量只能指向定義時所規(guī)定類型的變量。這個規(guī)定的類型稱為該指針變量的“基類型”。 ?定義指針變量后,并未確定該變量指向何處。也就是說該變量的值是不確定的。在引用指針變量前必須首先讓它指向一個變量,這一點非常重要。 ?永遠清楚每個指針變量指向了哪里? ?永遠清楚每個指針變量所指向變量中存儲的內容是什么? ?永遠不要使用未賦值的指針變量。 *: 指針運算符 (間接訪問運算符、指向運算符 ). amp。:取地址運算符 main( ) {int a,b。 int *p1,*p2。 a=100。 b=10。 p1=amp。a。 p2=amp。b。 printf(“%d %d”,a,b)。 printf(“%d %d”,*p1,*p2)。 } 對“ amp。”、“ *”、“ ++”及“ ”說明 : ① “amp。”、“ *”兩個算符優(yōu)先級相同 ,運算順序自右至左 .如 : int a,*p。 p=amp。a。 amp。*p的含義是什么 ? *amp。a的含義是什么 ? ② ++, 與“ *”優(yōu)先級相同 ,運算順序自右至左 .如 : int a=2,*p。 p=amp。a。 printf(“%d “,*p++)。 printf(“%d “,(*p)++)。 printf(“%d “,* ++ p)。 printf(“%d “, ++ (*p))。 初始化的一般形式為: 類型名 *指針變量名 =初始地址值; ? 例如 : ? int a,b。 ? int *p1=amp。a,*p2=amp。b。 ? include ? int main(void ) ? { ? int a=100,b=10。 ? int *p1,*p2。 ? p1=amp。a。p2=amp。b。 ? printf(%x,%x\n,p1,p2)。 ? printf(%d,%d\n,a,b)。 ? printf(%d,%d\n,*p1,*p2)。 ? return 0。 ? } 例 :輸入 a和 b兩個整數 ,按先大后小的順序輸出 . main( ) {int *p1,*p2,*p,a,b。 scanf(“%d%d”,amp。a,amp。b)。 p1=amp。a。 p2=amp。b。 if(ab) {p=p1。p1=p2。p2=p。} printf(“a=%d,b=%d\n”,a,b)。 printf(“max=%d,min=%d\n”,*p1,*p2)。} } 指針作為函數參數 ,是將一個變量的地址傳送到被調函數 . 例 :寫一個函數將兩個變量內容互換 . swap(int x,int y) {int p。 p=x。 x=y。 y=p。 } main( ) {int a,b。 scanf(“%d%d”,amp。a,amp。b): if(ab) swap(a,b)。 printf(“%d %d\n”,a,b)。} swap(int *p1,int *p2) {int p。 p=*p1。 *p1=*p2。 *p2=p。 } main( ) {int a,b,*pa,*pb。 scanf(“%d%d”,amp。a,amp。b): pa=amp。a。 pb=amp。b。 if(ab) swap(pa,pb)。 printf(“%d %d\n”,a,b)。} swap(int *p1,int *p2) {int *p。 *p=*p1。 *p1=*p2。 *p2=*p。 } swap(int *p1,int *p2) {int *p。 p=p1。 p1=p2。 p2=p。 } 危險! 由上可知 :如想通過函數調用得到 n個要改變的值 ,可以如下進行 : ① 在主調函數中設 n個變量 ,用 n個指針變量指向它們 。 ② 將指針變量作實參 ,將這 n個變量的地址傳給所調用的函數的形參 。 ③ 通過形參指針變量 ,間接改變這 n個變量的值 。 ④ 主調函數中就可以使用這些改變了值的變量 . 例 : 例 :輸入 a,b,c三個整數 ,按大小順序輸出 . swap(int *p1,int *p2) {int p。 p=*p1。 *p1=*p2。 *p2=p。 } xchang(int *q1,int *q2,int *q3) { if (*q1*q2) swap(q1,q2)。 if (*q1*q3) swap(q1,q3)。 if (*q2*q3) swap(q2,q3)。 } main( ) { int a,b,c。 int *p1,*p2,*p3。 scanf(“%d%d%d”,amp。a, amp。b, amp。c)。 p1=amp。a。 p2=amp。b。 p3=amp。c。 xchang(p1,p2,p3)。 printf(“%d %d %d”,*p1,*p2,*p3)。 } 若有類型定義: int a,b[5],*p1,*p2。 ⑴ 通過求地址運算符 (amp。)獲得變量的地址,并賦給指針變量。以下語句: p1=amp。a。 ⑵ 將一維數組 b的起始地址賦給指針變量 p1時,因為一維數組名為該數組的首地址,所以只需執(zhí)行語句: p1=b。 ⑶ 可以把指針變量中的地址值賦給另一個指針變量,但它們的基類型必須相同。以下語句: p2=p1。 注意 :同類型指針變量之間才能賦值 ⑷ 可以調用 C語言提供的庫函數 malloc和 calloc得到一個內存單元的地址(詳見結構體一章)。 ⑸ 給指針變量賦 NULL值(空指針)。所有指針變量都可以賦予“空”值。以下語句是等價的: ? p1=NULL;
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1