C 學習 指標

2021-06-27 03:55:44 字數 1524 閱讀 1934

關於二級指標的學習遇到了一些困惑,也有了一些不知是否正確的結論。

在文章中留個底以記錄學習過程。

author: 

以下是一些暫時的結論:

1.將每個變數名都理解成位址

2.注意區分堆與棧中的變數( ! )

3.*表示取左值(根據位址跳轉);&表示取位址(宣告時表示建立乙個引用)

ex.

char* string = "aaa";

char** p = &string;

cout<

//我的理解:

(1)"aaa"儲存在棧中,也具有位址;

(2)此時無法delete string,貌似應該是因為無法修改和刪除棧中的資料?

(3)第一步將"aaa"的 位址 賦值給string;*string是乙個char型資料

cout<

這兩句的輸出結果為:

aaaa

(4)c++的等號賦值傳遞的是變數的內容?

(5)為了在函式傳遞引數時可以修改作為引數的指標的內容,可以用二級指標。

理解上可以借鑑鍊錶刪除操作,即需要乙個指標將 後項 先連住以防丟失。

(6)按照上述第二步:

char** p = &string;

*p與string等價,因此呼叫delete *p 可以刪除string的內容(即"aaa"的位址)。

(7) "同級"的指標賦值表示指向同乙個目標,修改其中乙個指標的內容(位址)不改變另乙個的內容(位址);

(8)"一級指標"給"兩級指標"賦值,則「兩級指標」 指住了 「一級指標」,因此可以操作"一級指標"的內容。

ps.還是來一發影象解釋:

step 1:

//新建

//如果搞乙個指標指向原字串

//改變該指標的值 => 原來的string還是沒變

//用二級指標的話,終於讓 *p 與 string 等價了

//改變該指標的值 => 原來的string重定向

對於動態生成的自定義類物件(如:myclass mc = new myclass();),為了實現上述(5)的目的,最好也通過二級指標:因為可能過載「=」,使得原本傳遞位址改為自定義規則(比如新開乙個存物件的空間)

C學習 指標

1 指標 a int a 表示乙個記憶體空間,這個空間用來存放乙個整數 int b int a 表示乙個記憶體空間,這個空間用來存放乙個指標,這個指標指向乙個存放整數的空間,即 a 中提到的空間 c int a 表示乙個記憶體空間,這個空間用來存放乙個指標,這個指標指向乙個存放指標的空間,並且指向的...

C 指標學習

一 指標的概念 如果在程式中定義乙個變數,在編譯時系統會自動給這個變數分配記憶體單元,並根據程式中的定義的變數型別,分配一定長度的記憶體空間,這樣的記憶體單元裡放著變數的值。為了便於記憶體單元的訪問,系統為每乙個記憶體單元分配乙個位址。在變數的生存期內,不管以後對變數如何賦值,其記憶體位址都是固定不...

C 指標學習

1.指標即位址,指標型別的變數前面要加 是取變數的位址 int a,b int p1,p2 a 100 b 10 p1 a p2 b cout p1 p2 include using namespace std c 中引用傳遞的兩種方式 和 引用方式更加簡潔,直觀 函式的引數型別是指標型別,將變數的...