6.2.1 指針變量的定義
在C程序中,存放地址的指針變量需專門定義;
int *ptr1;
float *ptr2;
char *ptr3;
表示定義了三個(gè)指針變量ptr1、ptr2、ptr3。ptr1可以指向一個(gè)整型變量, ptr2可以指向一個(gè)實(shí)型變量,ptr3可以指向一個(gè)字符型變量,換句話說(shuō), ptr1、ptr2、ptr3可以分別存放整型變量的地址、實(shí)型變量的地址、字符型變量的地址。
定義了指針變量,我們才可以寫入指向某種數(shù)據(jù)類型的變量的地址,或者說(shuō)是為指針變量賦初值:
int *ptr1,m= 3;
float *ptr2, f=4.5;
char *ptr3, ch=’a’;
ptr1 = & m ;
ptr2 = & f ;
ptr3 = & c h ;
上述賦值語(yǔ)句ptr1 = & m表示將變量m的地址賦給指針變量ptr1,此時(shí)ptr1就指向m。三條賦值語(yǔ)句產(chǎn)生的效果是ptr1指向m;ptr2指向f;ptr3指向ch 。用示意圖6 – 3描述如下:
需要說(shuō)明的是,指針變量可以指向任何類型的變量,當(dāng)定義指針變量時(shí),指針變量的值是隨機(jī)的,不能確定它具體的指向,必須為其賦值,才有意義。
6.2.2 指針變量的引用
利用指針變量,是提供對(duì)變量的一種間接訪問(wèn)形式。對(duì)指針變量的引用形式為:
*指針變量
其含義是指針變量所指向的值。
[例6-1] 用指針變量進(jìn)行輸入、輸出。
m a i n ( )
{
int *p,m;
s c a n f ( ” % d ” , & m ) ;
p = & m ; / *指針p指向變量m * /
printf(“%d”,*p);
/* p是對(duì)指針?biāo)傅淖兞康囊眯问?與此m意義相同* /
}
運(yùn)行程序:
R U N ?
3?
3
上述程序可修改為:
m a i n ( )
{
int *p,m;
p = & m ;
s c a n f ( ” % d ” , p ) ; /* p是變量m的地址,可以替換& m * /
printf(“%d”, m);
}
運(yùn)行效果完全相同。請(qǐng)思考一下若將程序修改為如下形式:
m a i n ( )
{
int *p,m;
s c a n f ( ” % d ” , p ) ;
p = & m ;
printf(“%d”, m);
}
會(huì)產(chǎn)生什么樣的結(jié)果呢?事實(shí)上,若定義了變量以及指向該變量的指針為:
int a,*p;
若p=&a; 則稱p指向變量a,或者說(shuō)p具有了變量a的地址。在以后的程序處理中,凡是可以寫& a的地方,就可以替換成指針的表示p,a就可以替換成為* p。
指針變量的定義與引用
標(biāo)簽:printf