c++中的引用,給我們提供了一種區別於c指標的形參定義方式。一般我們可以將其定義為
1)普通引用
void foo(int &n);
2)常量
void foo(const int n);
3)常量引用
void foo(const int& n);
三種方法用途不一樣,都可以通過編譯。
以普通引用為形參的函式,一般會更改實參的值,比如increment(int &n)等;以常量以及常量引用為形參的函式,一般不對實參進行修改。需要注意的是,當函式的功能確定後,不能把常量引用和普通引用混淆,雖然編譯可以通過,執行也沒有錯誤,但是會對函式的安全性以及功能造成影響:
1)如果乙個本該是常量引用的形參定義成了普通引用,那麼程式設計師會誤認為這個形參可以修改。而且,在呼叫該函式的時候,會產生意想不到的錯誤。比如:
int getsize1(string &str)
int getsize2(const string &str)
void main()
顯然,getsize2才是符合正常函式思維的實現。
2)常量引用為形參時,形參指向實參的空間,而常量為形參時,編譯器會給形參重新分配空間。
void foo1(const int n)
void foo2(const int &n)
int main(int argc, char *ar**)
//輸出:
//e25f58cc
//e25f58ac
//e25f58cc
引用,指標,常量引用,常量指標,指標常量的區別
1.指標 指標代表乙個變數的位址 例如 int a 2,b 1,pi a pi b 2.引用 引用即針對乙個變數的別名,引用必須被初始化,引用作為引數 形參 時,不會像指標一樣使用儲存單元,更不會像值傳遞一樣建立該引數的副本,提高空間 時間效率。例如 int a 2,b a 3.常量引用 格式為 c...
函式引數 普通形參和引用形參
在呼叫函式時候,引用形參和普通型參是有著很大的區別。首先看函式在使用普通型參時候,編譯器是怎麼工作的。在函式呼叫的時候,編譯器為被調函式在棧空間申請一塊記憶體,此時普通形參也在這塊記憶體取,被實參初始化。說到這裡就明白了,在被調函式執行完畢後,編譯器會將其彈出棧空間。因此,形參也就消失了,此時主函式...
常量和引用
溫習c 至引用部分,做如下整理。用於修飾變數,表明不能修改。常用於修飾函式引數和普通變數。常問的點有指標常量和常量指標。指標常量 int const p 表明指標p是乙個常量,指向乙個int行變數。int a int b int const p a p b 指標p不可修改常量指標 const int...