![C語言教程-第八章-指針_第1頁](http://file4.renrendoc.com/view/c754e25ade98e780287ba85e7ffc0d02/c754e25ade98e780287ba85e7ffc0d021.gif)
![C語言教程-第八章-指針_第2頁](http://file4.renrendoc.com/view/c754e25ade98e780287ba85e7ffc0d02/c754e25ade98e780287ba85e7ffc0d022.gif)
![C語言教程-第八章-指針_第3頁](http://file4.renrendoc.com/view/c754e25ade98e780287ba85e7ffc0d02/c754e25ade98e780287ba85e7ffc0d023.gif)
![C語言教程-第八章-指針_第4頁](http://file4.renrendoc.com/view/c754e25ade98e780287ba85e7ffc0d02/c754e25ade98e780287ba85e7ffc0d024.gif)
![C語言教程-第八章-指針_第5頁](http://file4.renrendoc.com/view/c754e25ade98e780287ba85e7ffc0d02/c754e25ade98e780287ba85e7ffc0d025.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第八章指針2回顧數(shù)組是可以在內(nèi)存中連續(xù)存儲多個元素的結(jié)構(gòu)數(shù)組中的所有元素必須屬于相同的數(shù)據(jù)類型數(shù)組必須先聲明,然后才能使用。聲明一個數(shù)組只是為該數(shù)組留出內(nèi)存空間,并不會為其賦任何值數(shù)組的元素通過數(shù)組下標(biāo)訪問一維數(shù)組可用一個循環(huán)動態(tài)初始化,而二維數(shù)組可用嵌套循環(huán)動態(tài)初始化二維數(shù)組可以看作是由一維數(shù)組的嵌套而構(gòu)成的3目標(biāo)理解指針的概念定義指針變量掌握對指針的操作理解指針和數(shù)組的關(guān)系4指針簡介2-1內(nèi)存10intxED53地址變量數(shù)據(jù)ED53intptr_x指針指針ptr_x指向變量x5指針也是一個變量,只不過該變量中存儲的是另一個對象的內(nèi)存地址如果一個變量存儲另一個對象的地址,則稱該變量指向這個對象由于指針值是數(shù)據(jù),指針變量可以賦值,所以一個指針的指向在程序執(zhí)行中可以改變。指針p在執(zhí)行中某時刻指向變量x,在另一時刻也可以指向變量y指針簡介2-26聲明并初始化指針變量數(shù)據(jù)類型*指針名;int*ptrnum;char*ptralpha;float*rate_ptr;double*p,*q;
值為NULL的指針稱為空指針,這意味著,指針并不指向任何地址。
在頭文件stdio.h中,NULL定義為常量。ptrnum=NULL;7與指針相關(guān)的運(yùn)算符2-1intnum,*ptrnum;ptrnum=#
取地址符內(nèi)存100numFF7Cptrnum指針FF7C&8與指針相關(guān)的運(yùn)算符2-2intnum,*ptrnum;ptrnum=#*ptrnum=15;間接運(yùn)算符內(nèi)存100numFF7Cptrnum指針FF7C15*9指針的特點(diǎn)指針變量的命名規(guī)則和其他變量的命名規(guī)則一樣指針不能與現(xiàn)有變量同名
指針可存放C語言中的任何基本數(shù)據(jù)類型、數(shù)組和其他所有高級數(shù)據(jù)結(jié)構(gòu)的地址若指針已聲明為指向某種類型數(shù)據(jù)的地址,則它不能用于存儲其他類型數(shù)據(jù)的地址應(yīng)為指針指定一個地址后,才能在語句中使用指針10指針使用示例1#include<stdio.h>voidmain(){ intvar=10; int*ptr_var; ptr_var=&var; printf("var的值是:
%d",var); printf("\nvar的內(nèi)存地址是:
%x",&var); printf("\n指針
ptr_var的地址是:
%x\n",&ptr_var); printf("\nvar的值是:
%d",*ptr_var); printf("\nvar的地址是:
%x\n",ptr_var);}內(nèi)存varptr_var1012ff7cvar的值是:10var
的內(nèi)存地址是:12ff7c12ff7c12ff78指針ptr_var的地址是:12ff78var的值是:10var的地址是:12ff7c11指針使用示例2voidmain(){
intnum1=50,num2=100;int*ptr1,*ptr2;ptr1=&num1;printf("num1的值是:
%d",*ptr1);printf("\nnum1的地址是:
%x\n",ptr1);ptr2=&num2;printf("\nnum2的值是:
%d",*ptr2);printf("\nnum2的地址是:
%x\n",ptr2);*ptr2=*ptr1;printf("\n重新賦值后
num2的值是:
%d",*ptr2);printf("\n重新賦值后
num2的地址是:
%x\n",ptr2);}內(nèi)存num1ptr15012ff7c12ff7cnum2ptr210012ff7812ff785012intx,*ptr_x,*ptr_y;ptr_x=&x;ptr_y=ptr_x;
指針賦值運(yùn)算100xFF7Cptr_xptr_yFF7CFF7Cinta[5],*pa;pa=a;
a[0]a[1]a[2]a[3]a[4]2343115046paFE60FE64FE68FE6CFE70FE6013int*ptrnum,arr_num[8];ptrnum=&arr_num[0];ptrnum++;指針?biāo)阈g(shù)運(yùn)算2-1使用遞增/遞減運(yùn)算符(++和--)將指針遞增或遞減內(nèi)存arr_num[0]arr_num[1]arr_num[2]arr_num[3]arr_num[4]arr_num[5]arr_num[6]arr_num[7]1023156041491339一個類型為T的指針的移動,以sizeof(T)為移動單位。
14將指針加上或者減去某個整數(shù)值ptrnum=&arr_num[0];ptrnum=ptrnum+4;printf(“%d”,*ptrnum);ptrnum=&arr_num[5];ptrnum=ptrnum-2;printf(“%d”,*ptrnum);指針?biāo)阈g(shù)運(yùn)算2-24160內(nèi)存
arr_num[0]arr_num[1]arr_num[2]arr_num[3]arr_num[4]arr_num[5]arr_num[6]arr_num[7]102315604149133915比較兩個指針
#include<stdio.h>voidmain(){ int*ptrnum1,*ptrnum2; intvalue=1; ptrnum1=&value; value+=10; ptrnum2=&value; if(ptrnum1==ptrnum2) printf("\n兩個指針指向同一個地址\n"); else printf("\n兩個指針指向不同的地址\n");}
指針關(guān)系運(yùn)算16
指向數(shù)組的指針一個數(shù)組存儲在一塊連續(xù)內(nèi)存單元中;數(shù)組名就是這塊連續(xù)內(nèi)存單元的首地址;第(i+1)個數(shù)組元素的地址可表示為&data[i]或(data+i)。可以通過以下方式為指向數(shù)組的指針賦值:inta[10];pa=&a[0];//或者pa=a;一個指針變量可以指向一個數(shù)組元素
int*ptr,data[10];ptr=data+3;//或者ptr=&data[3]17指向數(shù)組的指針示例1#include<stdio.h>voidmain(){ intdata[]={5,10,15,20,25}; inti=0; int*ptr;
ptr=data; while(i<5) { printf(“\n第
%d個元素的存儲地址為:%x,值為:
%d\n“,i+1,ptr,*ptr); i++;
ptr++; }}內(nèi)存data[0]data[1]data[2]data[3]data[4]51015202512ff6c12ff7012ff7412ff7812ff7c第1個元素的存儲地址為:12ff6c,值為:5第2個元素的存儲地址為:12ff70,值為:10第3個元素的存儲地址為:12ff74,值為:15第4個元素的存儲地址為:12ff78,值為:20第5個元素的存儲地址為:12ff7c,值為:25ptrptrptrptrptr18指向數(shù)組的指針示例2voidmain(){charname[5]={'M','A','D','A','M'};intflag=1;
char*start=name,*end=name+4;for(;start<=end;start++,end--){ if(*start!=*end) { flag=0;break; }}if(flag) printf("\n該字符串是回文串\n");elseprintf("\n該字符串不是回文串\n");}內(nèi)存name[0]name[1]name[2]name[3]name[4]MADAM該字符串是回文串startendstartendendstart19總結(jié)2-1指針是一個變量,它存儲另一個對象的內(nèi)存地址指針的聲明由基本類型、星號(*)和變量名組成為指針賦值,賦值運(yùn)算符右側(cè)必須是一個地址。如果是普通變量需要在前面加一個取地址運(yùn)算符&;如果是另一個指針變量或者是一個
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《13潔凈的水域》說課稿-2023-2024學(xué)年科學(xué)六年級下冊蘇教版
- Unit 2 Months of a Year Lesson Three(說課稿)-2024-2025學(xué)年重大版英語六年級上冊
- Unit 6 Chores Lesson 4 Let's spell(說課稿)-2024-2025學(xué)年人教新起點(diǎn)版英語五年級上冊001
- 2025水泥磚銷售合同范文
- 2024年七年級數(shù)學(xué)下冊 第10章 一元一次不等式和一元一次不等式組10.4一元一次不等式的應(yīng)用說課稿(新版)冀教版
- 中型臭氧設(shè)備購買合同范例
- 8 安全地玩(說課稿)-部編版道德與法治二年級下冊
- 農(nóng)業(yè)設(shè)備供貨合同范例
- 冷庫設(shè)備購銷合同范例
- 個人借還款合同范例
- 《 西門塔爾牛臉數(shù)據(jù)集的研究》范文
- 八年級上冊 第三單元 11《簡愛》公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 真實(shí)世界研究指南 2018
- 2024年燃?xì)廨啓C(jī)值班員技能鑒定理論知識考試題庫-上(單選題)
- 中小商業(yè)銀行數(shù)字化轉(zhuǎn)型現(xiàn)狀及對策研究
- 2024-2030年中國車載冰箱行業(yè)市場發(fā)展調(diào)研及投資戰(zhàn)略分析報告
- 親子非暴力溝通培訓(xùn)講座
- 保險投訴處理流程培訓(xùn)
- (正式版)SHT 3046-2024 石油化工立式圓筒形鋼制焊接儲罐設(shè)計規(guī)范
- JJG 707-2014扭矩扳子行業(yè)標(biāo)準(zhǔn)
- 2024-2029年中國電力工程監(jiān)理行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告
評論
0/150
提交評論