1樓:
引用是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( )
} (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)使用引用的時機。流操作符<>、賦值操作符=的返回值、拷貝建構函式的引數、賦值操作符=的引數、其它情況都推薦使用引用。
2樓:馮凱在**
沒有這麼用的吧,能舉個例子嗎
3樓:匿名使用者
表示對定義一個指標變數的引用
c++中*和&同時使用是什麼意思?
4樓:人設不能崩無限
本來「* head」代表的是傳指標的,但是隻能改變head指向的內容,而「* &head」意思是說head是傳進來的指標的同名指標,就能既改變*head指向的內容,又能改變head這個指標。
c++語言的整數常量有三種形式:十進位制、八進位制、十六迸制。
(1)十進位制整數是由不以0開頭的0~9的數字組成的資料。
(2)八進位制整數是由以0開頭的0~7的數字組成的資料。
(3)十六進位制整數是由以0x或0x開頭的0~9的數字及a~f的字母(大小寫字母均可)組成的資料。
5樓:匿名使用者
在不同的地方有不同的語意.
單說你的這個例子void insertfront(node* & head, t item)
引數 node* & head 是指一個 node型別的指標(*)的引用(&).
6樓:沒有不怕
&是取值,假設int p=0,0這個資料儲存在記憶體0x04,而p這個符號儲存在0x08,那&p就等於p的地址0x08,p是指向0這個資料的,而*是所指向的資料,*&p就是取出p地址所指向的資料,即(*&p == 0)。
7樓:80的小尾巴
*表示指標,&表示引用,*&連用表示指標的引用,例如int * & a;表示宣告一個int型別指標的引用
8樓:匿名使用者
指標的引用
譬如int a(int* &num);
呼叫的時候
int *a=new int(1);
a(a);
這樣直接用a的值傳進函式,而不用再傳遞給形參num.
從而類似於操作a++;
而如果不加&,是無法改變a指標指向的地址的,只能改變*a的內容
c++語言中*&符號是什麼意思呢?
9樓:匿名使用者
指標引用。
#include
#include
using namespace std;
int main()
輸出5,基本能用a的地方就能用b,a和b幾乎等價。很舊版本的編譯器也許不支援這樣,不過目前版本的應該均是一致的。
c++ 中「&」這個符號代表什麼意思?
10樓:匿名使用者
1、地址符:
比如指標:int *p=&point; //定義一個指標變數p指向普通變數point的地址;
引用:int &rp=point; //建立一個int型的引用rp,並將其初始化為變數point的一個別名。
2、運算子:
比如位運算: &表示按位與,「按位與」的作用是將兩個運算元對應的每一位分別進行「邏輯與」操作。
如:3&5
3 0000 0011
5(&) 0000 0101
3&5 0000 0001
3、邏輯關係&&(且)
比如:if(i<1&&i>-1) j=i; //如果 i<1且 i>-1,把 i 賦給 j 。
c++程式中,一個&符號是什麼意思?
11樓:匿名使用者
1. "按位與" 運算子.
按位與運
算符"&"是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。
例如:9&5可寫算式如下: 00001001 (9的二進位制補碼)&00000101 (5的二進位制補碼) 00000001 (1的二進位制補碼)可見9&5=1。
按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進位制數為0000000011111111)。
main()
2. 變數 的 求地址 運算子&
例如:int a; float b;
scanf("%d %f ",&a,&b);
a 是整型變數,b 是float 型變數, 輸入語句的引數 規定要用變數 的地址表示,
所以 用了 &a 變數a的地址 , &b變數b的地址.
3。 && 是 邏輯運算子
邏輯 與
if ( (a > b) && ( a > c) ) max = a;
雙目運算,真 && 真 得真;假 && 真 得 假;假 && 假 得假.
4. & 也可以是字元 或 字元常數
"&&&" -- 雙引號裡的東西是 字串。
'&' -- 單引號裡的東西是字元常量,是整數,數值等於 它的 ascii 碼 編碼值。
12樓:匿名使用者
還可以是引用 如引用一個變數:int someint; int& rint=someint;
在c++中符號!x是什麼意思?
13樓:四舍**入
!是c++的邏輯運算子,意思是「非」。
!x的意思:對於一個命題x如果將其否定,就得到一個新命題,記作!x,讀作「非x」。
運算子是說明特定操作的符號 ,它是構造c語言表示式的工具 。c語言的運算異常豐富,除了控制語句和輸入輸出以外的幾乎所有的基本操作都作為運算子處理。除了常見的三大類,算術運算子、關係運算子與邏輯運算子之外,還有一些用於完成特殊任務的運算子,比如位運算子。
常用的c語言邏輯運算子有三種,包括與(&&)、或(||)、非(!)。
14樓:匿名使用者
運算子號在後邊,是先取x的值、再計算 x=x+1或x=x-1
運算子號在前邊,是先計算 x=x+1或x=x-1、再取x的值
*p,取指標的值
15樓:迷戀_哈哈
!是邏輯非得意思
也就是非x如果x是非零的數。就是真!x就是假也是0
如果x是零。!x是真。
16樓:手機使用者
argv是指向字串的指標,實際上就是字串陣列argv[0]是檔名 argv[1]是第一個引數 argv[2]是第二個引數……
先輸出x的值,顯示為"x=?",然後x加1應該是endl吧?endl代表換行,這裡就是空2行的意思
17樓:匿名使用者
x是個變數嗎?!「!」是不等於的意思。具體出現的環境是什麼?你說的太籠統了……
c++ 中 & 這個符號代表什麼意思
18樓:萍水e相逢
去 變數 的 地址吧
如char *p,str;
str="a";
p=&str;
19樓:匿名使用者
有三個用法.
一個是取變數的地址.
如int a =5;
int *p = &a;
printf("%d",*p); // 5二是按位與
如int a =5;
int b =2;
算術運算
三是 && 表示或者 邏輯 運算
另外還有引用的時候用到.
20樓:傑謙謹
您好,在c++中&代表位運算子,還有地址符。
21樓:j哦的了
設定引用名時候用的上、
22樓:匿名使用者
1、地址符:
比如指標:int *p=&point; //定義一個指標變數p指向普通變數point的地址;
引用:int &rp=point; //建立一個int型的引用rp,並將其初始化為變數point的一個別名。
2、運算子:
比如位運算: &表示按位與,「按位與」的作用是將兩個運算元對應的每一位分別進行「邏輯與」操作。
如:3&5
3 0000 0011
5(&) 0000 0101
3&5 0000 0001
3、邏輯關係&&(且)
比如:if(i<1&&i>-1) j=i; //如果 i<1且 i>-1,把 i 賦給 j 。
C 中和同時使用是什麼意思,C 裡 和 連用是什麼意思?
本來 head 代表的是傳指標的,但是隻能改變head指向的內容,而 head 意思是說head是傳進來的指標的同名指標,就能既改變 head指向的內容,又能改變head這個指標。c 語言的整數常量有三種形式 十進位制 八進位制 十六迸制。1 十進位制整數是由不以0開頭的0 9的數字組成的資料。2 ...
C 中文法符號是什麼意思,C 中 是什麼符號?
就是語言中用到的符號 如 等等。編譯原理的,很難啊。c 中 是什麼符號?c 中 是按位異或運算子 用於對資料的位進行操作 它表示的含義是逐位非或,要求兩個整型運算元。從最小 即最右 的位開始,對運算元逐位操作 如果只有其中一個位為1,那麼結果為1 否則為0。例如 0000 0000 1011 111...
c語言中是什麼意思,C語言中 和 符號是什麼意思?
是與的意思 即左右兩邊都成立才成立 應該是要 左邊成立且右邊不成立才成立 00000000000000000000 的優先順序大於 所以 a b就是 a b 兩個 表示 邏輯與 一個 表示 位與 與非,就是 與 和 非 的合體,比如a b就是a和我b並在一起的對立。不是一體的 和!是分開的 因為!有...