在c++++中,&符號有三種主要作用,具體取決于使用場景。1. &用于取地址,如&a表示取出變量a的內存地址,常用于指針操作,例如int* p = &a; 2. &用于聲明引用變量,如int& ref = a;表示ref是a的別名,修改ref會影響a;3. &作為按位與運算符,如5 & 3結果為1,執行二進制逐位與操作。這三種用法在函數傳參、指針操作和位運算中各有用途,理解它們有助于提升代碼效率和準確性。
在c++中,&符號的作用其實不止一個,具體要看它用在哪里。最常見的兩個用途是取地址和聲明引用變量。搞清楚這兩個用法,能幫你更好地理解函數傳參、指針操作這些常見場景。
1. &用于取地址
當你看到像&a這樣的寫法,意思就是“取出變量a的內存地址”。這在使用指針時特別常見。
比如:
立即學習“C++免費學習筆記(深入)”;
int a = 10; int* p = &a;
這里,p是一個指向整型的指針,而&a就是把變量a的地址賦給指針p。這樣,p就“指向”了a,之后可以通過*p來訪問或修改a的值。
這個用法很基礎,但也很關鍵,特別是在傳遞參數給函數需要修改原值的時候,或者動態分配內存后想保存地址時。
2. &用于聲明引用
這時候&不是取地址的意思,而是告訴編譯器:這是一個引用變量。
例如:
int a = 20; int& ref = a;
這里的ref就是a的一個別名,對ref做任何修改都會直接影響到a。你可以把它看作是a的另一個名字。
引用常用于函數參數傳遞,避免復制大對象,提高效率。比如:
void print(const std::string& str) { std::cout << str << std::endl; }
這樣傳參就不會拷貝整個字符串,而是直接使用原來的那個。
3. &還能表示按位與運算符
除了上面兩種語義,&也可以作為運算符出現,執行按位與操作。
比如:
立即學習“C++免費學習筆記(深入)”;
int x = 5 & 3; // 結果是1
因為5的二進制是101,3是011,按位與之后得到001,也就是1。
不過這種用法相對少一些,而且容易和其他用法混淆,尤其是在模板或復雜表達式里,要注意上下文。
- 如果你看到int* p = &a;,那&是取地址。
- 如果看到int& r = a;,那&是在聲明引用。
- 如果看到a & b出現在表達式中,那可能是在做按位與。
小結一下
- &var:取變量地址,配合指針使用
- type& ref:聲明引用,作為變量別名
- a & b:按位與運算
基本上就這些用法。剛開始可能會搞混,特別是引用和取地址這兩個完全不同但都用&的情況。多寫幾個例子,慢慢就能區分開了。