複製鏈接
請複製以下鏈接發送給好友

&

(C的位運算符)

鎖定
&是C的位運算符的一種,進行邏輯運算,格式是:變量1&變量2,進行計算時,將會把類型提升為int。二進制運算符&通過對兩個操作數一位一位的比較產生一個新的值,對於每個位,只有兩個操作數的對應位都為1時結果才為1.如10000001&11000000的結果為“10000000”.
外文名
&
屬    性
C的位運算符與取地址符

目錄

  1. 1 c語言
  2. 2 c++

&c語言

在c語言裏,&代表取地址符或者邏輯與運算
功能:
  1. 取變量的地址:&變量名,這將獲得該變量的地址。
  2. 作為位運算符:操作數1&操作數2,將操作數對應位進行比對,二者都為1時返回1,否則返回0。

&c++

在c++裏,除了c語言的功能之外,還代表“引用”
只能在創建變量的時候使用,格式是:類型 &變量名=另一個變量。如:
inta=0,&b=a,c;
聲明三個變量a、b、c,b和a等價,c是獨立的變量
注意:
  1. 類型標識符是指目標變量(等於號右邊)的類型。
  2. 聲明引用時,必須同時對其進行初始化,不能讓他指向其他變量。
  3. 引用的聲明符放置在變量名的前面,和*操作符的用法一樣
  4. 引用聲明完畢後,相當於目標變量名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變量名的別名。 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;}
  5. 值得一提的是,可以建立指針的引用
例如:
int*pointer;//建立一個指針
int*&p1=pointer;
/*
正確,編譯系統把"int*"看成一體,把"&p1"看成一體,即建立指針pointer的引用,就是給指針pointer起別名p1。
*/
int&*p2=pointer;//錯誤,這就變成了引用的指針