




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)
2023翻轉(zhuǎn)課堂實(shí)用教程9.1指針123指針的概念指針變量的定義與使用指針變量的運(yùn)算知識點(diǎn)指針的案例分析案例分析指針相關(guān)練習(xí)題練習(xí)題9.1.1指針知識點(diǎn)程序在運(yùn)行時,會為變量分配內(nèi)存空間。分配的內(nèi)存空間會有一個唯一的地址編號,在C語言中又叫做指針。通過指針可以找到該內(nèi)存單元。地址取值范圍:(32位系統(tǒng)為例)32位系統(tǒng)的內(nèi)存條,32個元件,232個組合=4*230,4GB內(nèi)存。內(nèi)存地址編號從0X00000000到0XFFFFFFFF(十六進(jìn)制表示)指針的概念指針變量保存某個內(nèi)存空間的地址,并對該內(nèi)存空間中的值進(jìn)行操作。指針變量的定義方式為:數(shù)據(jù)類型名*指針變量名;或者數(shù)據(jù)類型名*指針變量名=地址值;1.指針變量的定義與使用指針變量指向的變量的數(shù)據(jù)類型指針變量聲明符保存的是某個變量的地址int*pInt;//指向int型變量的指針char*pStr=NULL;//NULL為空指針,stdio.hint*pInt1,*pInt2;9.1.1指針知識點(diǎn)舉例:doublenum=3.14;double*pDouble=#//定義一個指向double型變量num的指針pDouble1.指針變量的定義與使用指針變量pDouble指向num示意圖&num3.14pDoublenum&取地址運(yùn)算符,num的地址pDouble指向num9.1.1指針知識點(diǎn)指針變量占用的內(nèi)存大小,僅與地址信息的大小有關(guān),與類型無關(guān)。#include<stdio.h>intmain(){inta=100;charc='C';doubled=3.14;int*pInt=&a;char*pStr=&c;double*pDouble=&d;//分別輸出int指針、字符指針、浮點(diǎn)型指針占用的字節(jié)數(shù)printf("%d%d%d",sizeof(pInt),sizeof(pStr),sizeof(pDouble));return0;}1.指針變量的定義與使用運(yùn)行結(jié)果(64位系統(tǒng),8個字節(jié))8889.1.1指針知識點(diǎn)(1)取內(nèi)容與取地址通過變量的地址/指針,同樣可以訪問到該變量的值。#include<stdio.h>intmain(void){ int*p,a=3; p=&a;
//兩種獲取變量a的方式,*p和a等價。 printf("*p的值為:%d,a的值為:%d\n",*p,a); *p=6;//通過指針p可以修改a的值 printf("*p的值為:%d,a的值為:%d\n",*p,a); return0;}2.指針變量的運(yùn)算取內(nèi)容,*p:p指向的變量a的值,等價取地址,&a:a的地址運(yùn)行結(jié)果:*p的值為:3,a的值為:3*p的值為:6,a的值為:6&a3
pa*p9.1.1指針知識點(diǎn)(2)賦值運(yùn)算doublenum=3.14,value=0.618;double*pDouble1=&num,pDouble2;//(a)pDouble1=&value;//(b)修改pDouble1的值,讓其指向value變量pDouble2=pDouble1;//(c)2.指針變量的運(yùn)算(a)(b)(c)9.1.1指針知識點(diǎn)(3)加法、減法和比較運(yùn)算指針變量還可以進(jìn)行加法、減法和比較運(yùn)算,一般當(dāng)指針變量指向數(shù)組中的元素時,才有實(shí)際的含義。2.指針變量的運(yùn)算9.1.1指針知識點(diǎn)指針變量只能與整數(shù)常量i進(jìn)行加減法運(yùn)算,加或減同類型數(shù)據(jù)長度的i倍,指針往后或往前移動i個同類型的數(shù)據(jù)。指針pI的加減運(yùn)算圖#include<stdio.h>intmain(){
inta=30,*p=&a,*pI=&a;
doubleb=3.14,*pD=&b;
charc='C',*pC=&c;
//前3個輸出語句,輸出各個類型占用的字節(jié)數(shù)
printf("sizeof(int)is%d\n",sizeof(int));
printf("sizeof(double)is%d\n",sizeof(double));
printf("sizeof(char)is%d\n",sizeof(char));
printf("初始值,pI:%#X,pD:%#X,pC:%#X\n",pI,pD,pC);//第4個輸出,先輸出各個指針的最初值
pI--;pD=pD-1;pC--;//第5個輸出,輸出-1后的值
printf("地址-1后,pI:%#X,pD:%#X,pC:%#X\n",pI,pD,pC);
pI+=2;pD+=2;pC+=2;//第6、7個輸出
printf("地址+2后,pI:%#X,pD:%#X,pC:%#X\n",pI,pD,pC);
printf("*pI:%d,*pD:%f,*pC:%c\n",*pI,*pD,*pC);
if(p==pI)printf("p和pI值相同,指向同一變量。");//第8個輸出,比較p和pI指針
elseprintf("p和pI值不同。");
return0;}9.1.1指針知識點(diǎn)運(yùn)行結(jié)果:sizeof(int)is4sizeof(double)is8sizeof(char)is1初始值,pI:0X62FE04,pD:0X62FDF8,pC:0X62FDF7地址-1后,pI:0X62FE00,pD:0X62FDF0,pC:0X62FDF6地址+2后,pI:0X62FE08,pD:0X62FE00,pC:0X62FDF8*pI:6487544,*pD:0.000000,*pC:p和pI值不同。(3)加法、減法和比較運(yùn)算%#X是輸出以0X開頭的十六進(jìn)制地址。9.1.2指針案例分析案例9.1.1指針變量運(yùn)算案例分析#include<stdio.h>intmain(void){ int*p,*pI,a=3; double*pD,num=0.618; pI=&a;//p指向a printf("*pI的值為:%d,a的值為:%d\n\n",*pI,a);
//修改a變量的值,*p的值也跟著改變 a=33; printf("*pI的值為:%d,a的值為:%d\n\n",*pI,a);
//修改*p變量的值,a的值也跟著改變 (*pI)++; printf("*pI的值為:%d,a的值為:%d\n\n",*pI,a); //同類型的指針可以相互賦值,兩者指向同一個變量a p=pI; printf("*p的值為%d,*pI的值為%d,a的值為%d\n",*p,*pI,a); //以十六進(jìn)制形式輸出p和pI的值,均為a的地址 printf("a的地址為%#0X;",&a); printf("p和pI的值為%#0X和%#0X\n\n",p,pI);
pD=# //*pD就是num的值0.618,*p就是a的值34 *pD=*pD+*p; //執(zhí)行完上面代碼后,*pD和num的值均變?yōu)榱?4.618 printf("*pD的值為:%f,num的值為:%f",*pD,num);return0;}*pI的值為:3,a的值為:3*pI的值為:33,a的值為:33*pI的值為:34,a的值為:34
*p的值為34,*pI的值為34,a的值為34a的地址為0X62FE04;p和pI的值為0X62FE04和0X62FE04
*pD的值為:34.618000,num的值為:34.618000課堂練習(xí)題9.1.1寫出執(zhí)行下面程序后的輸出結(jié)果#include<stdio.h>intmain(){ inta=2,b=3; int*p1=&a,*p2=&b; printf("p1指向的值為:%d,p2指向的值為%d\n",*p1,*p2); p2=p1; *p2=b; printf("p1指向的值為:%d,a的值為%d",*p1,a); return0;}9.1.3指針課堂練習(xí)題課堂練習(xí)題9.1.2查找下面程序中的2處錯誤。輸入a和b,并定義指針p1和p2分別指向a和b,通過取指針值的方式計(jì)算a和b的和,并輸出和。#include<stdio.h>intmain(){ inta,b; int*p1,*p2; p1=&a,p2=&b; scanf("%d%d",&a,&p2); printf("a+b=%d",p1+*p2); return0;}課堂練習(xí)題9.1.3參照案例9.1.1,自行設(shè)計(jì)一個對指針操作的程序,并分析程序運(yùn)行的結(jié)果。9.1.3指針課堂練習(xí)題9.3.3指針與數(shù)組課堂練習(xí)題課堂練習(xí)題9.3.2:寫出執(zhí)行下面程序后的輸出結(jié)果#include<stdio.h>intmain(){ inti; inta[10]=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年天津市安全員知識題庫
- 重慶工程職業(yè)技術(shù)學(xué)院《朗讀與講故事指導(dǎo)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西南民族大學(xué)《古生物學(xué)含實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京農(nóng)業(yè)大學(xué)《教育評價與測量》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱劍橋?qū)W院《廣告創(chuàng)意與策劃》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西體育高等??茖W(xué)校《電磁場理論與光波導(dǎo)技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025屆河南省周口市西華縣三校聯(lián)考高三上學(xué)期一模歷史試卷
- 贛南師范大學(xué)《幼兒園體育游戲》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇聯(lián)合職業(yè)技術(shù)學(xué)院《分子生物學(xué)(英文)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州城建職業(yè)學(xué)院《銷售管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 8.4+同一直線上二力的合成課件+2024-2025學(xué)年人教版物理八年級下冊
- 2024年河北省邢臺市公開招聘警務(wù)輔助人員(輔警)筆試專項(xiàng)訓(xùn)練題試卷(2)含答案
- 家政公司服務(wù)員考試題庫單選題100道及答案解析
- 人工智能:AIGC基礎(chǔ)與應(yīng)用 課件 實(shí)訓(xùn)項(xiàng)目九 使用度加創(chuàng)作工具和剪映進(jìn)行智能化短視頻創(chuàng)作
- 《日影的朝向及長短》課件
- 中職普通話教師教案模板
- 施工后期的場地恢復(fù)措施
- 七年級歷史下冊 第一單元 隋唐時期繁榮與開放的時代 第1課 隋朝的統(tǒng)一與滅亡說課稿1 新人教版
- 智能教育機(jī)器人AI項(xiàng)目策劃創(chuàng)業(yè)計(jì)劃書
- 《MATLAB編程及應(yīng)用》全套教學(xué)課件
- T-CCSAS 001-2018 危險與可操作性分析(HAZOP分析)質(zhì)量控制與審查導(dǎo)則
評論
0/150
提交評論