6.2.1 指針變量的定義
在C程序中,存放地址的指針變量需專門定義;
int *ptr1;
float *ptr2;
char *ptr3;
表示定義了三個指針變量ptr1、ptr2、ptr3。ptr1可以指向一個整型變量, ptr2可以指向一個實型變量,ptr3可以指向一個字符型變量,換句話說, ptr1、ptr2、ptr3可以分別存放整型變量的地址、實型變量的地址、字符型變量的地址。
定義了指針變量,我們才可以寫入指向某種數(shù)據(jù)類型的變量的地址,或者說是為指針變量賦初值:
int *ptr1,m= 3;
float *ptr2, f=4.5;
char *ptr3, ch='a';
ptr1 = & m ;
ptr2 = & f ;
ptr3 = & c h ;
上述賦值語句ptr1 = & m表示將變量m的地址賦給指針變量ptr1,此時ptr1就指向m。三條賦值語句產(chǎn)生的效果是ptr1指向m;ptr2指向f;ptr3指向ch 。用示意圖6 - 3描述如下:
需要說明的是,指針變量可以指向任何類型的變量,當(dāng)定義指針變量時,指針變量的值是隨機的,不能確定它具體的指向,必須為其賦值,才有意義。
6.2.2 指針變量的引用
利用指針變量,是提供對變量的一種間接訪問形式。對指針變量的引用形式為:
*指針變量
其含義是指針變量所指向的值。
[例6-1] 用指針變量進行輸入、輸出。
m a i n ( )
{
int *p,m;
s c a n f ( ' % d ' , & m ) ;
p = & m ; / *指針p指向變量m * /
printf('%d',*p);
/* p是對指針所指的變量的引用形式,與此m意義相同* /
}
運行程序:
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);
}
運行效果完全相同。請思考一下若將程序修改為如下形式:
m a i n ( )
{
int *p,m;
s c a n f ( ' % d ' , p ) ;
p = & m ;
printf('%d', m);
}
會產(chǎn)生什么樣的結(jié)果呢?事實上,若定義了變量以及指向該變量的指針為:
int a,*p;
若p=&a; 則稱p指向變量a,或者說p具有了變量a的地址。在以后的程序處理中,凡是可以寫& a的地方,就可以替換成指針的表示p,a就可以替換成為* p。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。