C語言中取位址跟C 中的引用是乙個意思嗎?

2025-03-08 04:45:20 字數 3164 閱讀 1497

1樓:掌夏戲胭

不是乙個意思,c語言中取位址是把變數的位址取出來,讓乙個指標指向這個位址。

c++中的引用是為變數起乙個別名,這兩個名字都是代表這個變數,這個別名是乙個引用而不是指標。

指標可以隨時改變指向的變數。

而引用只能在初始化的時候賦值,賦值後不能改變。如:指標:

intiintp

i;要想改變i的值就寫*p

還以改變p指向的變數如pp

引用:inti

intpi;要想改變i的值就寫p

這裡寫pp1;就把i加1了。

2樓:綦寄竹鄞辛

:是作用域操作符,表示你引用的變數限定在該作用域內。

是箭頭操作符,設計它的目的是為了簡化輸入,以及增強程式的可讀性的。

的功能相當於解引用操作符*和成員呼叫操作符。的組合體。

例如:class

cstaticinta;

訪問a就可以使用c::a來訪問,表明這個變數a具有類c的作用域。它在該類內可見。瞭解更多,那麼namespace就是個很好的例子。

另外。class

cprivate:inta;

voidmain()

cp=new

c();/訪問a可以使用如下。

p).a或者直接。

p->a

來訪問,是不是更簡單明瞭呢。

二者的功能是一樣的。總結就是,->的功能就是提供了一種物件指標更方便的訪問物件成員的方法。

c++中,引用與取位址有什麼區別?

3樓:網友

一、功能不同。

1、引用:用來進行傳值。

二、運算不同。

三、特點不同。

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

4樓:匿名使用者

所謂引用就是為物件起乙個別名。例如變數b = &a,b就是a的乙個引用。對b的任何操作等同於對a的操作,也就是說,如果你改變了b的值,同時a的值也會發生改變。

b就是a的另外乙個名字,他們實質是同乙個變數。就好比是同乙個人,只不過穿著不同的衣服而已。至於引用的用處,給你舉乙個簡單的例子,比如乙個交換兩個值的函式swap(int a, int b),如果將兩個值帶進去,發生交換的只是形參a和b,因為函式結束的時候這兩個引數的生命週期結束了,換句話說,實參a和b的值並未發生交換。

而如果swap(int &a,int &b)則不同,他的引數是a和b的引用,也就是說函式中的a和b就是你帶入的實參,當函式中的a和b發生變化時,被引用的值在同時也發生了變化,而不會受到函式宣告週期的影響。取位址則顧名思義,就是取得物件的位址,通過指標來操作物件,也可以達到引用的效果,它不是直接對物件進行操作,而是根據物件的位址。與引用不同的是,引用是不佔用儲存空間的,而如果用指標指向物件位址的時候會有自己的儲存空間。

舉個簡單的例子,swap(int *a, int *b), a和*b是指向實參的指標,即他們有實參的位址,而我們知道a和b的位址是沒有改變的,那麼根據他們的位址就可以操作他們的值,也就不用考慮函式生命週期了。舉的例子比較簡單,實際中的應用比這個複雜的多。只要能理解就好。

5樓:匿名使用者

引用&,你可以理解為給變數起了個別名。 只有在定義和宣告或者說明引數型別的時候才用,平時引用變數和普通變數一樣 比如:

int& b;//只是說明作用。

int a = 8;

int *b = &a;//這裡是取a的位址。

c++語言中 關於 引用 取址 指標的區別,能解釋一下嗎?

6樓:網友

指標與引用的區別。

1.引用只是變數的別名,而不是指向變數的指標(區別於取址運算子 "&不佔記憶體空間,對變數引用的改變其相應的變數也會改變。(引用不佔記憶體空間這一點不明白,難道用sizeof測試出來為0?

2.不能對引用使用指標間接運算子「*」進行復引用操作。(明白)

3.引用必須在宣告時初始化為某個物件,並且以後不能改變,宣告引用時未初始化是乙個語法錯誤。而指標在宣告時可以不初始化,並且可以被重新賦值以指向另乙個不同的物件。

因此當允許變數在某個時候指向另乙個物件時,應該把變數宣告為指標。(明白)

4.由於引用在宣告時必須初始化為指向某個物件並且不能更改,因此不存在指向空值的引用這個事實意味著使用引用的**效率比使用指標的要高。因為在使用引用之前不需要測試它的合法性。

相反,指標則應該總是被測試,防止其為空。(明白)

我覺得以上這幾點沒有說到實質之處,因為我在面試一家公司這個問題時以上幾點基本上都答出來了,但他還是搖頭。不知哪位能用文字和例子的形式解釋第1點,並補充其他區別之處。

7樓:

引用 不重新開闢新的儲存空間,只是使用別名方式,共用一段記憶體空間。

指標 使用乙個整形數儲存目標的位址值,用來指向目標,通過*p來獲取目標位址的儲存內容。

取址 使用&p形式獲取某個變數所在記憶體儲存空間的位址。

c++ 引用 是啥意思

8樓:網友

引用就相當於給變數另起乙個名字,好比外號,你的名字和外號指的都是你。

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

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

如下:定義引用ra,它是變數a的引用,即別名。

int a;

int &ra=a;

1)&在此不是求位址運算子,而是起標識作用。

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

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

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

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

ra與&a相等。

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

9樓:網友

引用 就是 代號 比如 你叫張三 但是 張三這兩個漢字並不是實際的你 它只是兩個漢字而已 但是張三 會指向 你。

c語言中的取地址符的作用,c語言中的取地址是在什麼時候要用,為什麼要用

b是定義一個變數 而a是引用一個變數。它們之間沒有比較的必要,可能是你理解上有偏差。a和b完全沒有關係,int b 是定義一個變數,且沒有給其初始化,scanf是標準庫提供的輸入函式,函式格式是scanf char format,void p format 是輸入數 回據格式控制字串,void p,...

c語言中如何在多個檔案中引用同結構體

把結構體定義在一個公共標頭檔案裡 然後都包含這個標頭檔案 引用結構 來體有引用型別,和引用全域性自變數bai兩種方式。1 引用型別。需要du將結構體定義 zhi與標頭檔案中 h檔案 然後在dao需要引用型別的原始檔 c 中,均引用該標頭檔案,即可使用該型別。2 引用全域性變數。要引用全域性變數,需要...

C語言中stdlibh的作用是什麼

stdlib 標頭檔案即standard library標準庫標頭檔案 stdlib 標頭檔案裡包含了c c 語言的最常用的系統函式 該檔案包含了c語言標準庫函式的定義 stdlib.h 定義雜項函式及記憶體分配函式 c語言中assert的作用是什麼?是程式除錯很重要的手段,assert f 在de...