c 中引用,位址,指標,別名,變數的區分,盡可能詳細點,最好舉個例子

時間 2022-08-05 11:27:56

1樓:匿名使用者

變數好比乙個班級,比如高一2班。

位址就是變數在記憶體中的位置,比如高一2班在3樓第2間教室,這就是高一2班的位址。

指標就是存放位址的變數。

引用就是別名,相當於給變數起「外號」。

int a=2;// a 就是變數

int *p = &a;// &a 是位址,p 是指標int &b = a; // b 是 a 的引用,或者說別名

2樓:匿名使用者

你這問題太大了,買本書才能全清楚了。

引用,位址,指標,別名,變數的區分,要詳細點說,沒個萬把字絕對說不詳細

求c++指標的深刻理解最好能舉個例子 謝謝了

3樓:

我經常用箭頭和盒子來說明指標的概念。

盒子裡可以放各種變數,可以是基本變數,例如int,char;盒子中也可以放復合變數,例如放了乙個結構體;

箭頭就是指標了。在沒有對指標賦值之前,這個指標是不能用的,因為它不知道指向了**。

要使用指標有兩種方法

1)讓箭頭指向某個盒子,也就是取某個變數的位址,然後賦予指標int a = 3;

int *p;

p = &a; // 這是設定設定箭頭的方向*p = 5; // 這是設定箭頭所指的盒子裡的內容2)憑空生出個盒子,然後讓箭頭指向這個盒子,也就是動態分配;

int *p;

p = (int*)malloc(sizeof(int)); // 造乙個可以放下int的盒子

*p = 5;

指標的基本使用就是這樣了

4樓:

int a = 10;

int *p = &a;

printf("%d",a);

printf("%d",*p);

a = 9;

printf("%d",*p);

struct st

st *pst = new st();

pst->a = 10;

pst->b = 2.2;

delete pst;

5樓:匿名使用者

資料型別是一種規定了儲存大小與儲存規則的資料儲存方式.

例如c++中的int資料型別,大小為4byte,儲存類規則為整數,char資料型別,大小為1byte,儲存規則為字元.

指標就是一種資料型別,大小為4byte,儲存規則為位址(指標所指向的變數的位址).

&為引用操作符,將此操作置於變數名前時可以取得此變數的位址,例如int a=5;,則&a表示整數5在記憶體中位址.*為反引用操作符,將此操作符置於指標前時可以取得該指標所指向變數的值.例如int *a; int b=5; a=&b;,則*a的值為5,而a的值為整數5在記憶體中的位址.

另外還有指向指標的指標,指向物件的指標,原理均與此相同.

例如則b的值為變數a在記憶體中的位址,c的值為指標b在記憶體中的位址.

class example

};example* pclass;

example a;

pclass=&a;

int c=pclass->add();

則c=11,其中操作符->相當於由物件引用函式時的操作符..

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

6樓:匿名使用者

一、功能不同

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

二、運算不同

三、特點不同

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

7樓:匿名使用者

所謂引用就是為物件起乙個別名。例如變數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的位址是沒有改變的,那麼根據他們的位址就可以操作他們的值,也就不用考慮函式生命週期了。舉的例子比較簡單,實際中的應用比這個複雜的多。只要能理解就好。

8樓:匿名使用者

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

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

b=8;

取位址符號&是乙個「動作」,表示取該變數的位址。 比如:

int a = 8;

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

c++中結構體變數如何給結構體指標賦值,結構體指標被賦值後,要通過函式傳址時需加&嗎?最好舉個例子

9樓:

你那個hello結構體指標都沒指向任何有效物件怎麼能賦值?

10樓:匿名使用者

指標是用來指向一片位址的 怎麼賦值 位址本來就是位址 不用加取位址符號

C中的引用問題

利用反射進行動態載入和呼叫.assembly ass assembly.loadfrom dllpath 利用dll的路徑載入 載入dll後,需要使用dll中某類.type type ass.gettype typename 利用型別的命名空間和名稱獲得型別 需要例項化型別,才可以使用,引數可以人為...

C中如何編寫Dll的入口函式,C 中怎樣引用c編寫的dll

lz 是不是說沒有原始碼,直接修改編譯好的dll。強!c 怎麼建立包含入口函式的dll?20 c 建立的的dll是託管 沒有入口函式的 普通的c 並不能呼叫c 建立的dll c 中怎樣引用c編寫的dll c 中引用c編寫dl l include stdafx.h include mydll.h if...

c中基類引用指向繼承類的物件

嚴格來說,應該說兩塊,a佔4個位元組的空間,儲存的是到b的引用位址,另一塊就是堆上的b例項了,因為a是乙個引用位址,a.methoda 實值上執行的是堆上b例項的b.methoda 父親有的東西兒子可以繼承 反過來呢 自然不允許 程式設計也是如此!派生類可以引用基類的變數 而積累則不可以 也不是太絕...

C中String到底是引用型別還是值型別?很疑惑為什麼書上說的都自相矛盾啊

對於新建.net框架的string類時,net的各個語言是必須用類似 string s new string string類屬於.net框架 但c 語言環境下定義了小寫的string 作為string類的別名 作為語言組成部分的關鍵字 也定義了 abc 作為字串的表現法。都不同於新建物件的語法。st...

如何將IPv4位址轉換成C 中的整數

ip本來就是整數,ip是32位二進位制,轉化為十進位制就是四組數,沒組三位,中間的點不是小數點,是用來區分等級的,比如通過ip可以知道幾位 表示網路號,幾位表示主機。什麼東西?轉化整數?c 如何將乙個使用者輸入的ip位址,轉換成32位有符號整數 將ip位址轉換為我們經常看到的4個整數的那種,c 語言...