資源描述:
《指針及指針變量的概念ppt課件.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第八章指針重點:指針及指針變量的概念、定義及數(shù)據(jù)訪問原理指針和數(shù)組的關(guān)系,使用指針變量訪問一維數(shù)組的方法指針和二維數(shù)組的關(guān)系重點:(續(xù))指針與字符串的關(guān)系,運用指針處理字符串以數(shù)組名、指針作為函數(shù)參數(shù)的應用指針數(shù)組、指針函數(shù)、二級指針的概念及應用8.1地址和指針的概念變量的地址稱為該變量的指針,通過在變量名前加取地址運算符“&”即可獲得該變量的地址,圖8-1中地址2500是變量i的指針,可由表達式&i獲得。C語言提供了一類特殊的變量專門用來存放另一個關(guān)聯(lián)變量的地址,稱之為指針變量。如圖8-2所示,指針變量i_pt中存放
2、了變量i的地址2500H。當指針變量中存放著某一個變量的地址時,就稱這個指針變量指向那一變量,即指針變量i_pt指向變量i。引入指針概念后,程序可直接通過變量名i訪問變量的值30,也可間接通過指針變量i_pt中存放的地址2500H去訪問變量i的值,區(qū)別于通常的直接訪問,我們稱這種訪問形式為變量的間接訪問。8.1地址和指針的概念i2500圖8-2變量及變量指針30i_pt2500i2500圖8-1變量及變量地址30&i8.1地址和指針的概念按照C語言的規(guī)定,指針變量在使用之前必須先定義,一般形式如下:數(shù)據(jù)類型說明符*指針
3、變量名;“指針變量名”由一個合法的標識符構(gòu)成。指針變量名前的“*”是指針變量說明符,用以說明標識符所表示的變量是一個指針變量。char*p1;/*p1是指向char型變量的指針變量,存取單位為1個字節(jié)*/float*p2;/*p2是指向float型變量的指針變量,存取單位為4個字節(jié)*/類型相同的多個指針變量以及普通變量、數(shù)組等可以放在一條變量說明語句中進行定義。下列說明語句是合法的:int*pa,*pb,x,t[10];8.1.2指針變量的使用inti,*i_pointer;i_pointer=&i;語句執(zhí)行后,指針變
4、量i_pointer的值即為變量i的地址,此時i_pointer就成了指向變量i的指針變量。8.1.2指針變量的使用inti,*i_pointer1,*i_pointer2;i_pointer1=&i;i_pointer2=i_pointer1;語句執(zhí)行后指針變量i_pointer1和i_pointer2都成為指向變量i的指針變量。8.1.2指針變量的使用指針變量與其它普通變量一樣,可在定義時直接賦初值。例如:intx=2,*px=&x;floaty,*py=&y;第一條語句用變量x的地址對指針變量px進行初始化,第二
5、條語句用變量y的地址對指針變量py進行初始化,使得px指向變量x、py指向變量y。8.1.2指針變量的使用指針變量與普通變量不一樣,只能存放地址,不可將一個整數(shù)或任何其他非地址類型的數(shù)據(jù)賦給一個指針變量。下面的賦值操作不合法:int*pointer_1=100;8.1.2指針變量的引用C語言提供了兩個指針運算符:&:取地址運算符;*:指針運算符。例如&a為變量a的地址,*p為指針變量p指向的變量的值。例8-1:利用指針變量訪問整型變量。/*程序8-1.c,指針變量訪問整型變量*/#includevoi
6、dmain(){inta=10,*p=&a;printf("a=%d,*p=%d",a,*p);}a圖8-3p指向變量a10p&a例8-2:利用指針實現(xiàn)兩個整型數(shù)據(jù)的交換。引入指針之前,要交換兩個數(shù)據(jù)a、b的值,得借助于中間變量t,先將變量a的值保存到t,再將變量b的值賦給a,最后將保存在t中的a的原值賦給b。指針提供了交換操作的另一種實現(xiàn)方法:定義兩個整型變量的指針p1和p2分別指向變量a、b,利用*p1和*p2獲取a、b的值,并實現(xiàn)數(shù)據(jù)交換。/*程序8-2.c,利用指針交換數(shù)據(jù)*/#include"stdio.
7、h"voidmain(){inta=9,b=25,*p1=&a,*p2=&b,c;c=*p1;*p1=*p2;*p2=c;printf("a=%d,b=%d,*p1=%d,*p2=%d",a,b,*p1,*p2);}例8-3:根據(jù)程序執(zhí)行的輸出結(jié)果,分析以下程序:/*程序8-3.c*/#include"stdio.h"voidmain(){intx=10,y;int*px;px=&x;y=*px;printf("x=%d,y=%d",x,y);*px=20;printf("Newx=%d",*px);}8.2指
8、針的運算1、算術(shù)運算指針變量可以參與加法和減法運算。設(shè)p為指針變量,n為正整數(shù),則指針算術(shù)運算表達式的一般形式為:p±n2、自增/自減運算(++、--)對指針變量進行自增自減運算,實質(zhì)上與算術(shù)運算的p±1一致,即將向前/向后移動指針變量,使其指向內(nèi)存中的前一個/后一個同類型變量,8.2指針的運算3、關(guān)系運算當兩個指針變量pa、pb