1.函數原型:函數原型描述了函數到編譯器的介面,也即是說它將函數傳回值的類型以及參數的類型數量告訴編譯器。
2.指標和const:
const用法有兩種:一種是讓指標指向一個常量對象(指標所指的內容是const),另一種是將指標本身聲明為常量(指標為const)。
int age =39;
const int * pt = &age;
int const *pt 與 const int *pt 是完全相同的。
該聲明指出,pt指向一個const int(這裡是39),因此不能用pt來修改這個值,也即是說,*pt的值為const,不能被修改(不能通過*pt修改age的
值),但是可以通過age修改age的值。
在C++中,禁止將const地址賦給非const指標。如:
const float fg= 1.54;
float *pm= &fg; // 這種賦值是非法的。
而如下賦值是對的:
cosnt float fg=1.54;
const *pm= &fg;
注意:如果資料類型本身並不是指標,則可以將const資料或非const資料的地址賦給指向const的指標,但只能將非cosnt資料的地址賦給非const指標
指標的另一些妙用:
請看下面聲明:
int num=39;
cosnt int * pt=& num;
在上面第二個聲明中,cosnt只能防止修改pt指向的值,而不能防止修改pt的值,也即是說可以將一個新的地址賦給pt:
int age=34;
pt = &age;
但是仍然不能使用pt修改其指向的值。
第二種使用const方式,使得無法修改指標的值:
int sum= 440;
const int * pt =∑
int * const pm = ∑
在上面第三個聲明中,使得pm只能指向sum,但是運行使用pm修改sum的值,第二個聲明不允許使用pt修改sum的值,但運行將pt指向另一個
地址。簡而言之,pm和*pt都是const(常量),而*pm和pt不是。
3. 數組與結構:數組名是地址,而結構名不是,要擷取結構的地址,必須採用取址符&。
4.函數指標:
函數指標聲明:通常要聲明指向特定類型函數的指標,可以首先寫出該函數的原型,然後用(*fp)替換函數名,這樣fp就是這類函數的指標。
例:
double pam (int );
double (*fp)(int );
其中(*fp)必須加括弧,因為括弧的優先順序比*高,故 *fp(int) 意味著fp()是一個返回指標的函數,而(*fp)(int)是一個指向函數的指
針。聲明完後可以把地址賦給指標:fp = pam;
指標函數調用:
在使用函數指標時,只需將其看作函數名,即將(*fp)看作函數名:
double pam(int);
double (*fp)(int);
fp = pam;
double x= pam(4);
double y = (*fp)(5);
指標函數:是傳回值為指標的函數。