1樓:段禹墨
在c++中引用有兩種, 我們常稱乙個用'&'修飾的變數為引用, 引用分常量引用和非常量引用兩種, 其中常量引用指的是以const作為修飾符(但其實並未用'&'修飾)的變數(如const int x), 而此處所定義的int& x即為非常量引用. 這是當'&'在宣告變數時的用法,所以int &x;是可以的. 而類似的我們使用*來定義變數時也有int *p,亦即定義乙個指向int型的指標p的用法.
'&'運算子和'*'運算子除了可以在宣告變數時使用外, 也可以在一般語句中使用, 我們常用'&'來表示取某一變數的位址, '*'來表示取某個位址中的值;
另外,我們也可以將'&'和'*'用於函式的宣告以及定義中去. 應該知道, 乙個函式頭主要包含了返回值,函式名和引數三個部分. 所以, 當*位於不同位置時也會有不同含義, 諸如int * func() 和 (int *)func()和int (* func)(), int func(int *a),他們的區別為:
int * func() : func是乙個函式,返回值是int *型別.
(int *)func(): 一般來說是將func的返回值強制轉換為int *, 實際效果與1無太大差別.
int (* func)(): func是乙個函式指標,它指向乙個沒有形式引數的函式,這函式返回乙個int值.
int func(int *a): 我們常用a表示陣列的首位址, 亦即int func(int a).
而'&'用於函式頭時,最多的用處就是用於修飾形參表示引用, 這樣就可以在子函式中修改原本不能修改的形參的值了.
本質:引用是別名,指標是位址,具體的:①從現象上看,指標在執行時可以改變其所指向的值,而引用一旦和某個物件繫結後就不再改變。
這句話可以理解為:指標可以被重新賦值以指向另乙個不同的物件。但是引用則總是指向在初始化時被指定的物件,以後不能改變,但是指定的物件其內容可以改變。
出處:網頁鏈結
引用鏈結的這一段, 一是因為他講的很好(我不想打字了[delete]), 而且, 這裡也涉及到了int &x的賦值問題, 因為有時我們書寫int &x = 10;時會發現報錯: 非常量引用的初始值必須為左值, 而
int k = 10;int &x = k;卻可以. 我認為這段話中"引用則總是指向在初始化時被指定的物件"很好的解釋了原因, 亦即k是乙個開闢了空間的物件, 而10只是乙個常數, 他們的儲存位置是不同的(這裡感興趣的話可以去搜資料查詢c++的四個儲存位置).
ps: 手打不易,求採納,翻滾翻滾~
2樓:呼啦啦
隨便舉個例子
int pop(sqstack &st,int &x;)
這是乙個形參,sqstack &st表示傳遞st這個棧的位址。也就是說,當你在這個形參裡改變這個棧的內容,無論你這個形參是否返回(是否是void),主函式中的st也隨之改變。
int &x也是一樣,傳遞的是x的位址,在形參中改變x的值,主函式中的x值也改變。
而int x只是傳遞了x此時的值。
把位址比做地皮,上面的內容比做房子。
int x就是把這個房子的平面圖給你,你可以改,但是那個房子沒有變。
int &x就是把這塊地給你,你把房子重新裝修,這個房子就真正地變了。後面你再把這個房子的平面圖給別人,給的是裝修後的平面圖。
不知道這麼說你能不能聽懂。
*就是定義乙個指標變數,指標變數相當於地標,標出地皮位置。比如int*p=a[i],翻譯過來是讓int型指標p指向a[i]的位址。理解成把p這個地標放在a[i]的地皮上,並且p是變數,可以移動。
3樓:
&是引用,*是指標變數
int &x; 是什麼意思,怎麼用?
4樓:匿名使用者
「&」是引用運算子 ,用來說明乙個引用。其格式是:
資料型別 &引用名=已定義的變數名
例:int a=10;
int &i=a;
i=i+100;
這時,i的值為 110。
int &x,和int y有什麼區別不
5樓:匿名使用者
當然有區別了。 int &x 是按位址出送。。在方法裡面只要x的值改了。 那麼原來的值也跟著改變。。而int x 區域性變數的改變不會影響 原來x 的值。
6樓:匿名使用者
int &x指的是x變數的在記憶體中的位址;而int y指的是y變數本身。
7樓:匿名使用者
int &x和int y是有區別的,區別如下:
int &x一般只用於函式的引數中, 而int y不止用在函式引數中。
int &x做引數時,傳遞變數是該實參的引用型別,函式執行過程中可以改變實參的值,而int y傳遞的是實參的拷貝,函式執行後不改變實參的值。
在程式引數型別選擇時需要根據具體的需要選擇合適的型別進行宣告。
8樓:匿名使用者
int &x 不能這麼定義的吧
&x表示的是取得x的儲存位址的意思
int*& x和int* x有什麼區別麼 int*& x是什麼意思
9樓:匿名使用者
int *& 是指標引用,相當於const int **,即靜態的指標位址。
int i=*(int *)&x; 這句話在c語言裡面是什麼意思?
10樓:天雨下凡
int i=*(int *)&x;相當於int i=x;功能是把x的值賦給i
*(int *)&x,其中&x是對變數x的位址,(int *)把它轉化成int型指標,最前面再加上乙個*進行解引用,結果就是變數x的值。
11樓:
&x:表示取變數x的位址值,位址即指標。
(int *)&x:表示將&x指標強制轉換為int *型別指標。
int i = *(int *)&x:表示取首位址是&x的記憶體空間中int型別的值(int型別是佔4個位元組的記憶體空間的),將該值賦值給整型變數i。
&在c++中有什麼作用,比如int &x;
12樓:匿名使用者
在宣告語句中 &name宣告乙個引用
在單目操作中 為取址操作 與*相對 如 int * t1,t2; t1= &t2;
在雙目運算中 為位運算 int a=0x123,b=0x333; a=a&b;
13樓:明久理
有兩種作用
1是去用於取各種型別的變數的位址,這個主要用在指標那方面
2做為引用的標誌——也就是為某個變數設定別名,比如int &a=b,那麼a是b的別名,也就是引用
14樓:匿名使用者
取位址的
int *a;
int i=0;
a&=i;
此時cout<<*a;//這裡輸出的是1
cout<
15樓:匿名使用者 取位址運算子~~ 比如int i[3]=; int *p; p=&i[0]; *p//就是0 *(p+1)//就是1 *(p+2)//就是2 int x,*p=&x則&*x和*&p分別表示什麼 16樓:金色潛鳥 &*x 和 *&p 都是錯誤的表達。 因為 int x; 沒有 *x 形式,只有求位址 &x 形式. 因為 int *p; 沒有 &p 形式,只有求指向的值 *p 形式. 可以 有 &*p, 可以 有 *&x. &*p 就是 p, *&x 就是 x. 例如:int x=8; int *p=&x; 等同 幸子趣味生活 可以,如何燒青椒藕片呢。藕是很好很有營養的菜,青椒炒藕簡單又大方,是很好的下酒菜。做起來方便,吃起來有淡淡的香甜味。方法 步驟 主料藕1節或更多青椒4,5個 1.將藕洗乾淨,切成片狀 特別要注意,藕的孔裡面有沒有泥巴.2。在鍋中放入適量的熟香油,用大火加熱。3.準備幾個青椒,洗乾淨切好... 羊奶雞蛋羹 羊奶250毫公升,雞蛋2個,冰糖50克。用清水適量將冰糖煮溶,倒入羊奶煮沸,打入雞蛋,攪拌均勻煮沸,即可食用。據營養學專家介紹,羊奶在國際營養學界被稱為 奶中之王 羊奶的脂肪顆粒體積為牛奶的三分之一,更利於人體吸收,並且長期飲用羊奶不會引起發胖。羊奶中的維生素及微量元素明顯高於牛奶,美國... 迪奧真我心悅香水好聞。在dior的香水裡,真我系列應該算是最經典的,而真我系列中,又以真我心悅最受歡迎。是混有玫瑰和茉莉的花香味。不得不說,聞了這麼多款香,真心被這一款迪奧折服了,味道非常清新,甜蜜中透露著一絲涼意。這款香名叫 真我心悅 顧名思義,聞後令人心情愉悅,尤其是在炎炎夏日,這款香不知不覺中...藕和辣椒炒可以嗎
羊奶和雞蛋同時食用可以嗎
迪奧真我哪個系列好聞?具體說說味道可以嗎