&是C的位運算符的一種,進行邏輯與運算,格式是:變數1&變數2,進行計算時,將會把類型提升為int。二進制運算符&通過對兩個運算元一位一位的比較產生一個新的值,對於每個位,只有兩個運算元的對應位都為1時結果才為1.如10000001&11000000的結果為“10000000”.
c語言
- 取變數的地址:&變數名,這將獲得該變數的地址。
- 作為位運算符:運算元1&運算元2,將運算元對應位進行比對,二者都為1時返回1,否則返回0。
c++
inta=0,&b=a,c;
- 類型標識符是指目標變數(等於號右邊)的類型。
- 聲明引用時,必須同時對其進行初始化,不能讓他指向其他變數。
- 引用的聲明符放置在變數名的前面,和*操作符的用法一樣
- 引用聲明完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。 ra=1; 等價於 a=1;
聲明一個引用,不是新定義了一個變數,它只表示該引用名是目標變數名的一個別名,它本身不是一種數據類型,因此引用本身不占存儲單元,系統也不給引用分配存儲單元。故:對引用求地址,就是對目標變數求地址。&ra與&a相等。
可以建立數組的引用。
#include<iostream> using namespace std; int main() { int m[10]={1,2,3,4,5,6,7,8,9,10}; int (&n)[10]=m; for(int i=0;i<10;i++) cout<<m[i]<<' ' ; cout<<endl; for( i=0;i<10;i++) cout<<n[i]<<' ' ; cout<<endl; return 0;} - 值得一提的是,可以建立指針的引用
int*pointer;//建立一個指針int*&p1=pointer;/*正確,編譯系統把"int*"看成一體,把"&p1"看成一體,即建立指針pointer的引用,就是給指針pointer起別名p1。*/int&*p2=pointer;//錯誤,這就變成了引用的指針