31 指針變量

點(diǎn)擊藍(lán)字
關(guān)注我們
DRAGON BOAT FESTIVAL
01 怎么定義指針變量
一般形式
類型名 *指針變量名;
例子:int *point_1,*point_2;
左端的int是在定義指針變量時必須指定的“基類型”。指針變量的基類型用來指定此指針變量可以指向的變量的類型。
指針變量前面的“*”表示該變量的類型為指針變量。
一個變量的指針的含義包括兩個兩個方面,一是以存儲單元編號表示的地址,一是它指向的存儲單元的數(shù)據(jù)類型(如int,char,float等)。
指向整型數(shù)據(jù)的指針類型表示為“int”,讀作“指向int的指針”或簡稱“int指針”。
。。。。。。。。。。。。
指針變量中只能存放地址(指針),不要將一個整數(shù)賦給一個指針變量。
02 怎樣引用指針變量
給指針變量賦值。如:p=&a;指針變量p的值是變量a的地址,p指向a。
引用指針變量指向的變量。如已執(zhí)行
p=&a即指針變量p指向了整型變量a,
printf(“%d”,*p);其作用是以整數(shù)形式輸出指針變量p所指向的變量的值,即變量a的值。
引用指針變量的值。如:
printf(“%o”,p);作用是以八進(jìn)制形式輸出指針變量p的值,如果p指向了a,就是輸出了a的地址,即&a。
&取地址運(yùn)算符。&a是變量a的地址。
*指針運(yùn)算符,*p代表指針變量p指向的對象。
03 指針變量作為函數(shù)參數(shù)
訪問內(nèi)存空間,一般分為直接訪問和間接訪問。
如果知道內(nèi)存空間的名字,可通過名字訪問該空間,稱為直接訪問。由于變量即代表有名字的內(nèi)存單元,故通。過變量名操作變量,也就是通過名字直接訪問該變量對應(yīng)的內(nèi)存單元。
如果知道內(nèi)存空間的地址,也可以通過該地址間接訪問該空間。對內(nèi)存空間的訪問操作一般指的是存、取操作,即向內(nèi)存空間中存入數(shù)據(jù)和從內(nèi)存空間中讀取數(shù)據(jù)。
在 C 語言中,可以使用間接訪問符(取內(nèi)容訪問符)*來訪問指針?biāo)赶虻目臻g。
函數(shù)的參數(shù)不僅可以是整型、浮點(diǎn)型、字符型等數(shù)據(jù),還可以是指針類型,它的作用是將一個變量的地址傳送到另一個函數(shù)中。
不能企圖通過改變指針形參的值而使指針實(shí)參的值改變。
函數(shù)調(diào)用可以得到一個返回值,而使用指針變量作參數(shù),可以得到多個變化了的值。
04 野指針
把沒有合法指向的指針稱為“野”指針。因?yàn)椤耙啊敝羔橂S機(jī)指向一塊空間,該空間中存儲的可能是其他程序的數(shù)據(jù)甚至是系統(tǒng)數(shù)據(jù),故不能對“野”指針?biāo)赶虻目臻g進(jìn)行存取操作,否則輕者會引起程序崩潰,嚴(yán)重的可能導(dǎo)致整個系統(tǒng)崩潰。
例如:
int *pi,a;//pi未初始化,無合法指向,為“野”指針*pi=3;//運(yùn)行時錯誤!不能對”野”指針指向的空間做存入操作。//該語句試圖把 3 存入“野”指針pi所指的隨機(jī)空間中,會產(chǎn)生運(yùn)行時錯誤。a=*pi;//運(yùn)行時錯誤!不能對”野”指針指向的空間取操作。//該語句試圖從“野”指針pi所指的空間中取出數(shù)據(jù),//然后賦給變量a同樣會產(chǎn)生運(yùn)行時錯誤。
正確的使用方法:
pi=&a;//讓pi有合法的指向,pi指向a變量對應(yīng)的空間*pi=3;//把3間接存入pi所指向的變量a對應(yīng)的空間

球分享

球點(diǎn)贊

球在看
