




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
……2111000100066地址21021121299910001001………………去211房間,那里有線索地址1000整數(shù)66第8章指針引例指針變量指向第8章指針inta;floatb;內(nèi)存單元按字節(jié)編號(hào)
charc;
int:4字節(jié)
float:
4字節(jié)
char:
變量類型不同,占據(jù)的字節(jié)數(shù)不同變量所占存儲(chǔ)單元首字節(jié)的編號(hào)就是變量的地址ab2000200220042006c2008…
1字節(jié)
0000000200010003……double:
8字節(jié)變量的地址
指針
變量的地址
指針變量
存放指針的變量指針變量的定義類型名*指針變量名1,*指針變量名2,...;如:int*i_p,*j_p;float*t;類型名(int、float、char等)規(guī)定了指針變量可以指向什么類型的變量。
*定義指針變量的標(biāo)志第8章指針注意:*并不是變量名的一部分。注意:指針變量中只能存放規(guī)定類型的變量的地址。
指針
變量的地址
指針變量
存放指針的變量指針變量的定義類型名*指針變量名1,*指針變量名2,...;給指針變量賦地址值&取址運(yùn)算符{inti=0,*i_p;i
i_p&ivoidmain()0……i_p=&i;指針變量i_p指向變量i第8章指針注意:只能用地址給指針變量賦值,不能用普通數(shù)據(jù)給指針變量賦值。
指針
變量的地址
指針變量
存放指針的變量指針變量的定義類型名*指針變量名1,*指針變量名2,...;給指針變量賦地址值&取址運(yùn)算符{inti=0,*i_p;通過指針變量間接訪問變量*i_p:訪問指針變量i_p所指向的變量i
i_p&i*voidmain()
……}0……i_p=&i;3*i_p=3;i=3;指針變量i_p指向變量i第8章指針
間接訪問運(yùn)算符
變量的地址
存放指針的變量程序舉例例1:以下程序段的輸出結(jié)果是
.int*var,ab;ab=100;var=&ab;ab=*var+10;cout<<*var<<endl;varab100&ab110110…………例2:寫出程序的運(yùn)行結(jié)果……
intk=2,m=4,n=6;
int*pk=&k,*pm=&m,*p;*p=*pk*(*pm);
cout<<n<<endl;
……k2m4n6pk&kpm&mp&n8*pk*(*pm)*p=88k*m
p=&n;n=8#include<iostream.h>voidmain(){
inti=100,j=200;
int*p1,*p2;p1=&i;p2=&j;*p1=*p1+1;p1=p2;*p1=*p1+1;
cout<<i<<""<<j;}101201例3:寫結(jié)果程序舉例i100j200p1&ip2&j201101&j程序舉例例4填空。該程序的功能是輸入兩個(gè)整數(shù),然后按從小到大的順序輸出。voidmain(){
inta,b;
int*maxp,*minp;
cin>>a>>b;
maxp=
e
cout<<*minp<<""<<*maxp;
=a<b?&a:&b;}
minpa>b?&a:&b;#include<iostream.h>指向數(shù)組元素的指針變量以一維數(shù)組為例voidmain()a[0]a[1]a[2]a[3]a[4]指針變量的定義pa數(shù)組首地址賦給指針變量&a[0]pa=&a[0];a指針變量指向數(shù)組元素若pa指向a[0],for(i=0;i<5;i++)例:對數(shù)組進(jìn)行輸入輸出。
{inta[5],i,*pa;則pa+i指向a[i]。通過指針訪問數(shù)組元素……由于pa+i指向a[i],則*(pa+i)間接訪問a[i]。for(i=0;i<5;i++)cout<<*(pa+i)<<"";}pa+1pa+4cin>>*(pa+i);
scanf("%d",pa+i);printf("%d
",*(pa+i);指針變量的運(yùn)算pa
指針變量加一
以整型數(shù)組為例:voidmain()20002004200820122016a[0]a[1]a[2]a[3]a[4]
指向下一個(gè)數(shù)組元素。指針變量減一
{inta[5],*pa=a;pa++;pa-=2;pa+=3;2000200420162008pa+n的地址:
pa+n*dd與類型有關(guān):
int:4float:4char:1指向上一個(gè)數(shù)組元素。……}指針變量的運(yùn)算p1
以整型數(shù)組為例:20002004200820122016a[0]a[1]a[2]a[3]a[4]兩個(gè)指針變量相減p1=&a[1];p2=&a[4];p2&a[1]&a[4]p2-p1的值是表示兩個(gè)指針之間元素的個(gè)數(shù)。兩個(gè)指針變量可以進(jìn)行關(guān)系運(yùn)算p1=&a[1];p2=&a[4];p1<p2的值是p1==p2的值是310指向一維數(shù)組的指針變量訪問數(shù)組元素的方式下標(biāo)法數(shù)組名指針
若p指向a[i]a[i]*(a+i)
若p指向a[0]則*(p+i)表示間接訪問a[i]
(直接訪問)則*p表示間接訪問a[i]a[0]a[1]a[2]a[3]a[4]a……a+1a+4a[0]a[1]a[2]a[3]a[4]p&a[0]……p+1p+4p[i]a[i]#include<stdio.h>voidmain(){chara[]="Stu-Dent",*pa;
for(pa=a;*pa!='\0';pa++)if(*pa>='A'&&*pa<='Z')*pa=*pa+32;elseif(*pa>='a'&&*pa<='z')*pa=*pa-32;
puts(a);}例5:寫結(jié)果。a[0]a[1]a[2]a[3]a[4]Stu-Dpa&a[0]ent\0a[5]a[6]a[7]a[8]s&a[1]T&a[2]U&a[3]&a[4]d&a[5]E&a[6]N&a[7]T&a[8]sTU-dENT程序舉例#include<stdio.h>voidmain(){
inta[]={1,2,3,4,5,6,7,8,9,10};
int*p;p=a;
printf("%d\n",*p+9);}10#include<stdio.h>voidmain(){
inta[]={3,2,5,6,7,4};
int*p=a;p++;
printf("%d\n",*(p+3));}7例6:寫結(jié)果程序舉例例7:寫結(jié)果。5程序舉例#include<iostream.h>voidmain(){charb[4]="ABC",*s;s=b;do{
cout<<*s%10; s++;}while(*s!='0');}b[0]b[1]b[2]b[3]ABC\0s&b[0]&b[1]6&b[2]7&b[3]例8:寫結(jié)果。ABC程序舉例#include<stdio.h>voidmain(){charb[4]="ABC",*s;s=b;do{
puts(s); s++;}while(*s!='0');}b[0]b[1]b[2]b[3]ABC\0s&b[0]&b[1]BC&b[2]C&b[3]例9:輸入12345678,寫出以下程序的運(yùn)行結(jié)果。#include<stdio.h>voidmain(){int
a[M],i,j,t,*p=a;for(i=0;i<M;i++)scanf("%d",a+i);i=0;j=M-1;while(i<j){t=p[i];p[i]=[j];p[j]=t;i++;j--;}for(i=0;i<M;i++,p++)printf("%3d",*p);a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]12345678ij8116722563345443
8
7
6
5
4
3
2
107程序舉例#defineM8}p&a[0]p[0]p[1]p[2]p[3]p[4]p[5]p[6]p[7]&a[1]&a[2]&a[3]&a[4]&a[5]&a[6]&a[7]作業(yè)實(shí)驗(yàn)指導(dǎo)書P136第1、2大題課本P173第一、二、三大題編譯預(yù)處理在編譯源程序之前,由預(yù)處理器執(zhí)行的指令。目的是對源程序進(jìn)行一些加工處理。預(yù)處理指令以“#”開頭,每條指令占一行。末尾不加分號(hào)。三種類型:1.文件包含指令2.宏定義指令3.條件編譯指令預(yù)處理指令文件包含
意義在一個(gè)文件中包含另一個(gè)文件的內(nèi)容Acpp1.cppBstdio.h#include<stdio.h>BAcpp1.cpp
一般形式#include"文件名"#include<文件名><>
預(yù)處理器到標(biāo)準(zhǔn)目錄下查找該文件""先在當(dāng)前目錄查找,找不到再到標(biāo)準(zhǔn)目錄找宏定義不帶參數(shù)的宏定義用一個(gè)名字代表一串文字。#define標(biāo)識(shí)符文本信息#definePI3.1415926#define標(biāo)識(shí)符用文本信息替換宏名帶參數(shù)的宏定義#define宏名(參數(shù)表)文本信息文本中要包含參數(shù)表中的參數(shù)宏展開時(shí)要先進(jìn)行參數(shù)替換#defineS(a,b)a*barea=S(3,2);3*2宏定義命令宏名voidmain(){s=PI*r*r;}預(yù)處理時(shí)進(jìn)行宏展開3.1415926voidmain(){}3
a2
b…………
宏定義舉例例1以下程序中for循環(huán)循環(huán)的次數(shù)是多少?程序的運(yùn)行結(jié)果是什么?
#defineN2#defineMN+1#defineNUM(M+1)*M/2voidmain(){inti;
for(i=1;i<=NUM;i++);
printf("%d\n",i);}宏展開(1)(M+1)*M/2(2)(N+1+1)*N+1/2(3)(2+1+1)*2+1/2=8答:執(zhí)行8次結(jié)果:9N+1M2
N#include<stdio.h>NUM(M+1)*M/2NUM
宏定義舉例例2寫結(jié)果。
F(m+n)(1)P*m+n*m+n(2)4*m+n*m+n20m+n
x4
P#include<iostream.h>#defineP4#defineF(x)P*x*xvoidmain(){intm=2,n=4;
cout<<F(m+n)<<endl;}=20宏展開
宏定義舉例例3寫結(jié)果。
F(m+n)(1)P*(m+n)*(m+n)(2)4*(m+n)*(m+n)36m+n
x4
P#include<iostream.h>#defineP4#defineF(x)P*(x)*(x)voidmain(){intm=2,n=4;
cout<<4/F(m+n)<<endl;}4/4*(m+n)*(m+n)宏展開
宏定義舉例例4寫結(jié)果。
F(m+n)(1)(P*(m+n)*(m+n))(2)(4*(m+n)*(m+n))0m+n
x4
P#include<iostream.h>#defineP4#defineF(x)(P*(x)*(x))voidmain(){intm=2,n=4;
cout<<4/F(m+n)<<endl;}4/(4*(m+n)*(m+n))
宏定義舉例例5寫結(jié)果。
f(a-1)
a-1*a-1*a-1
f((a-1))-48a-1x(a-1)
x#include<iostream.h>#definef(x)x*x*xvoidmain(){inta=3,s,t;s=f(a-1);t=f((a-1));
cout<<s<<""<<t<<endl;}(a-1)*(a-1)*(a-1)1、編寫程序,計(jì)算兩個(gè)矩陣(均為2行2列)之積。輸入分2*2行:前兩行為第一個(gè)矩陣,后兩行為第二個(gè)矩陣。樣例輸入:
12
45
35
17
2、編寫程序,輸出矩陣(3行3列)的左上三角。樣例輸入:
123
456
789
作業(yè)樣例輸出:
519
1755
樣例輸出:
123
45
7
3、編寫程序,輸出n層正方形圖案。正方形圖案最外層是第一層,每層用的數(shù)字和層數(shù)相同。樣例輸入:3
4、編寫程序,計(jì)算二維數(shù)組中各行之和、各列之和以及所有元素之和。樣例輸入:
23
123
456作業(yè)樣例輸出:
11111
12221
12321
12221
11111
樣例輸出:
615
579
21
5、編寫程序,找出m行n列的二維數(shù)組中每行元素的最大值以及每列元素的最小值。輸入分m+1行:第一行為m和n的值,以下m行代表二維數(shù)組,其中每一行包括n個(gè)數(shù)。輸出分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級下冊數(shù)學(xué)教案-4.1 容積|北師大版
- 2025年機(jī)動(dòng)車典當(dāng)合同
- 六年級上冊數(shù)學(xué)教案-總復(fù)習(xí) 你會(huì)算嗎-求陰影部分的面積|北師大版
- 2025年科研合作協(xié)議
- 第四單元驕人祖先 燦爛文化整體教學(xué)設(shè)計(jì)-2024-2025學(xué)年道德與法治五年級上冊統(tǒng)編版
- Unit 3 I'm more outgoing than my sister. SectionB 1a-1e教學(xué)設(shè)計(jì)2024-2025學(xué)年人教版英語八年級上冊
- 2025年湖北三峽職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫匯編
- 2024年全腦開發(fā)項(xiàng)目資金申請報(bào)告代可行性研究報(bào)告
- 2025年嘉興南洋職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫完整
- 2025年共青科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整版
- 校園食品安全和膳食經(jīng)費(fèi)管理方案3篇
- TSGD7002-2023-壓力管道元件型式試驗(yàn)規(guī)則
- 九年級化學(xué)下冊 第12單元 化學(xué)與生活教案 (新版)新人教版
- 金融服務(wù)消費(fèi)糾紛調(diào)解工作規(guī)范
- 后腹腔鏡下輸尿管切開取石術(shù)
- 二手車購買收據(jù)合同范本
- 《國際貿(mào)易實(shí)務(wù)(英文版)》(英文課件) - Ch 1 Introduction to International Trade Practices-Ch 5 Price
- 2022版義務(wù)教育英語課程標(biāo)準(zhǔn)整體解讀課件
- 2024精美復(fù)工復(fù)產(chǎn)安全培訓(xùn)
- 01 H5入門知識(shí)課件
- 2024年企業(yè)管理咨詢服務(wù)費(fèi)簡單合同范本
評論
0/150
提交評論