c 中的用法,C 操作符 用法

2022-03-14 13:58:52 字數 6115 閱讀 6259

1樓:千鋒教育

在c++裡,除了c語言的功能之外,還代表「引用」

只能在建立變數的時候使用,格式是:型別 &變數名=另一個變數。如:

inta=0,&b=a,c;

宣告三個變數a、b、c,b和a等價,c是獨立的變數注意:型別識別符號是指目標變數(等於號右邊)的型別。

宣告引用時,必須同時對其進行初始化,不能讓他指向其他變數。

引用的宣告符放置在變數名的前面,和*操作符的用法一樣引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。 ra=1; 等價於 a=1;

宣告一個引用,不是新定義了一個變數,它只表示該引用名是目標變數名的一個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。故:對引用求地址,就是對目標變數求地址。

&ra與&a相等。

可以建立陣列的引用。

<10;i++) cout<

2樓:匿名使用者

& 且;a&b,a滿足時b也要滿足。明白?和 | 是一起的,a | b 是 就是a或者b,!這個就是非了。

3樓:

&有三種用法取地址,引用,按位與操作

4樓:匿名使用者

&有好多意思

1、位運算子,按位與

2、取地址運算子,取得物件的地址

3、引用,一個變數的別名

5樓:新奕秀穎

取地址 例如

int a=0;

int *p=&a;

引用 例如

int b=0;

int &c=b;

按位與操作

int d=0;

int e=1;

int f=d&e;

c++操作符&用法

6樓:布穀娛樂

inline 關鍵字用來定義一個類的行內函數,引入它的主要原因是用它替代c中表示式形式的巨集定義

7樓:匿名使用者

& 是位運算裡的位與操作,運算規則為

0 & 0 = 0,

0 & 1 = 0,

1 & 0 = 0,

1 & 1 = 1。

我估計這個函式是找出整數的二進位制裡面是1的位的最小位置,比如12(00000000 00001100),得到的結果是第三位為1,即00000000 00000100。

分析如下,首先把二進位制分成從低到高兩部分,一部分為低位的0連帶第一個1,第二部分為剩下的部分,上例的12分為地位的100和高位的00000000 00001。而-x為取x的相反數,因為數在一般的計算機中是用補碼錶示,相反數的取法是對二進位制取反然後加1,即-12為11111111 11110011 + 1 = 11111111 11110100。這樣的話先取反,低位部分變成0加若干個1(011),高位取反就是,然後加1,若干個1由於會進位,低位又會變為1加若干個0(011 + 1 = 100),高位依舊是反的,那麼就可以看出,其實函式的結果和高位部分沒有關係了,因為和原來的數高位部分位與操作之後高位全是0,原數低位部分的0在結果中也是0,只有那個1留到了最後

c++中的引用(&)到底都有什麼用處?

8樓:匿名使用者

比如int f(int a)

當你如下呼叫時:

int b;

f(b);

編譯器會把b的值賦給a,在函式體內操作a;

而如果函式定義為:int f(int& a)當你呼叫時,沒有這個賦值的過程,因為此時a是實參的別名,相當於直接操作了實參b;

從這個例子可以看到引用的兩個特性:

1 節約空間,少了一個實參賦值給形參的過程2 可以直接操作實參,而不是形參

你說的物件導向中的節約記憶體,就是第一個特性,因為類物件往往很大,如果賦值方法進行函式呼叫的話,會增加開銷。

9樓:匿名使用者

主要是引數傳遞時起作用,普通的引數傳遞,其實是傳遞了一份拷貝,如果引數比較複雜,比如大物件,那麼產生的開銷會很大;而且普通的引數傳遞,不能把更改回寫,而引用傳遞可以改變引數的值。

10樓:匿名使用者

int num = 0;//給num 分配了一個int型的記憶體空間,初始化為 0;

int &n = num;//沒有分配記憶體空間,引用了一個變數名;

相當於給num 又起了一個別名叫 n;使用 n 和 num 是一樣的;

11樓:

比如你要傳遞一個實參 如果實參過大 為了避免複製就可以用引用

12樓:匿名使用者

貌似。。。直接點&就是取地址符,取記憶體地址,好像哈~~~~

13樓:匿名使用者

我也是半桶水,我就把它理解為指標,他有指標的一些優勢,但和指標又有不同。

編譯器會為指標分配空間,不會為引用分配空間。

比如呼叫函式,傳遞引數時,可以避免把實參複製給形參的消耗。

14樓:匿名使用者

引用在一定程度上就是指標。在c中,用指標作為變數呼叫函式,往往需要先把變數的地址賦值給一個指標變數,然後用這個指標變數作為函式實參。

其實有很多情況下我們在寫程式得時候可能沒想到定義得這個變數被用到函式引數中,但是確實需要,而且要求其數值改變,那麼引用就可以做到這一點,在傳遞引數的同時還可以使得實引數值發生改變,因而增加了靈活性。

15樓:南京葉巨集

c/c++的另一特點是完備的指標型別,指標(pointer)的本質其實就是單元的地址,若當初翻譯成接地氣的「地址型別」更合適。指標可以靈活操縱各種型別,但一些人濫用指標而鑽起了牛角尖。c語言的函式只有傳值呼叫,沒有傳址引數,用指標可以間接實現,但不直觀、方便或帶來錯誤,所以,c++引入「引用」型別(reference),以解決c語言只有傳值呼叫的缺陷。

「引用「型別只是指標型別的補充,兩者內部有相似的地方, 有時引用可以簡化指標的使用。

引用的本質,就是用地址單元直接表示這個地址指向的單元。相當於彙編的間接定址。

為何靜態引用出現「限制」

如果要問為什麼c++不能訪問「應用」自已?這要涉及它增加「應用型別"的目的:是為了函式的傳址呼叫,而不是為了讓你靜態使用、發揮。

傳址呼叫時,實參的地址送入棧中的形參單元,子程式內是通過形參才能訪問實參,而不許訪問棧中的形參(實參的地址)。編譯器故意阻止了對應用單元(形參)本身的訪問,不是疏忽,而是精心設計,防止子程式內**無意中損壞了形參中的地址,這樣才能不出現***,這就是真正原因。

請問c++中的引用符號「&」到底怎麼使用?

16樓:苑

c++中的引用符號「&」的使用方法是,型別識別符號 &引用名=目標變數名。

c++是c語言的繼承,它可進行過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。引用(reference)就是c++對c語言的重要擴充。引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。

17樓:西西哩的小馬甲

引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。

引用的宣告方法:型別識別符號 &引用名=目標變數名;

【例1】:int a; int &ra=a; //定義引用ra,它是變數a的引用,即別名 ;

說明:(1)&在此不是求地址運算,而是起標識作用。

(2)型別識別符號是指目標變數的型別。

(3)宣告引用時,必須同時對其進行初始化。

(4)引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。 ra=1; 等價於 a=1;

(5)宣告一個引用,不是新定義了一個變數,它只表示該引用名是目標變數名的一個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。

故:對引用求地址,就是對目標變數求地址。&ra與&a相等。

(6)不能建立陣列的引用。因為陣列是一個由若干個元素所組成的集合,所以無法建立一個陣列的別名。

18樓:匿名使用者

引用是c++引入的新語言特性,是c++常用的一個重要內容之一,正確、靈活地使用引用,可以使程式簡潔、高效。

引用簡介

引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。

引用的宣告方法:型別識別符號 &引用名=目標變數名;

【例1】:int a; int &ra=a; //定義引用ra,它是變數a的引用,即別名

說明:(1)&在此不是求地址運算,而是起標識作用。

(2)型別識別符號是指目標變數的型別。

(3)宣告引用時,必須同時對其進行初始化。

(4)引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。

ra=1; 等價於 a=1;

(5)宣告一個引用,不是新定義了一個變數,它只表示該引用名是目標變數名的一個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。故:對引用求地址,就是對目標變數求地址。

&ra與&a相等。

(6)不能建立陣列的引用。因為陣列是一個由若干個元素所組成的集合,所以無法建立一個陣列的別名。

引用應用

1、引用作為引數

引用的一個重要作用就是作為函式的引數。以前的c語言中函式引數傳遞是值傳遞,如果有大塊資料作為引數傳遞的時候,採用的方案往往是指標,因為這樣可以避免將整塊資料全部壓棧,可以提高程式的效率。但是現在(c++中)又增加了一種同樣有效率的選擇(在某些特殊情況下又是必須的選擇),就是引用。

【例2】:

此處函式的形參p1, p2都是引用

為在程式中呼叫該函式,則相應的主調函式的呼叫點處,直接以變數作為實參進行呼叫即可,而不需要實參變數有任何的特殊要求。如:對應上面定義的swap函式,相應的主調函式可寫為:

main( )

float &fn2(float r) //定義函式fn2,它以引用方式返回函式值

void main() //主函式

} (5)在另外的一些操作符中,卻千萬不能返回引用:+-*/ 四則運算子。它們不能返回引用,effective c++[1]的item23詳細的討論了這個問題。

主要原因是這四個操作符沒有side effect,因此,它們必須構造一個物件作為返回值,可選的方案包括:返回一個物件、返回一個區域性變數的引用,返回一個new分配的物件的引用、返回一個靜態物件引用。根據前面提到的引用作為返回值的三個規則,第2、3兩個方案都被否決了。

靜態物件的引用又因為((a+b) == (c+d))會永遠為true而導致錯誤。所以可選的只剩下返回一個物件了。

4、引用和多型

引用是除指標外另一個可以產生多型效果的手段。這意味著,一個基類的引用可以指向它的派生類例項。

【例7】:

class a;

class b:public a;

b b;

a &ref = b; // 用派生類物件初始化基類物件的引用

ref 只能用來訪問派生類物件中從基類繼承下來的成員,是基類引用指向派生類。如果a類中定義有虛擬函式,並且在b類中重寫了這個虛擬函式,就可以通過ref產生多型效果。

引用總結

(1)在引用的使用中,單純給某個變數取個別名是毫無意義的,引用的目的主要用於在函式引數傳遞中,解決大塊資料或物件的傳遞效率和空間不如意的問題。

(2)用引用傳遞函式的引數,能保證引數傳遞中不產生副本,提高傳遞的效率,且通過const的使用,保證了引用傳遞的安全性。

(3)引用與指標的區別是,指標通過某個指標變數指向一個物件後,對它所指向的變數間接操作。程式中使用指標,程式的可讀性差;而引用本身就是目標變數的別名,對引用的操作就是對目標變數的操作。

(4)使用引用的時機。流操作符《和》、賦值操作符=的返回值、拷貝建構函式的引數、賦值操作符=的引數、其它情況都推薦使用引用。

關於C 中typedef操作符的疑問

普通的變數定義一般是這樣 type var 比如int n 那如果在前面加上typedef則表示型別定義,如typedef int n 這裡的n不在是變數,而是型別,可以用它定義變數,如n i 則告訴編譯器i的型別為和n的型別一樣 在不加typedef的時候 同理,在你的問題中如果去掉typedef...

C 中的const的用法,c 中const是怎麼使用的?

個人的一些筆記,希望可以幫助你 const 的使用 const經常用來修飾一個值不能改變的量,安全,並且能消除儲存操作 const的幾種用法 1 說明值常量 2 說明指標 3 說明函式引數及其返回值 4 說明類的常量和成員函式 const 說明值常量 值常量的說明一般放在標頭檔案或者檔案的開始部分,...

c中this的用法是什麼語法

主要差異在於返回值,相同點在於對i進行自加 i返回的是i自加後的內容,i 返回的是i未自加的內容。舉個例子 int i 10 a i vs int i 10 b i 結果分別是 i 11,a 10和 i 11,b 11。將i 和 i彙編結果,若沒有使用其返回值賦值特性,結果是一樣的,有返回值差異在於...