c day3 指標,棧記憶體,堆記憶體

2021-10-05 07:39:37 字數 1194 閱讀 1119

在c++中指標就是 記憶體位址 (十六進製制的資料), 它記錄著記憶體空間的位址, 大小是8個位元組

指標的定義:

int a = 10;

int *pint;

pint = &a;

// 也可以

int *pint = &a;

其中 pint 指標變數儲存的就是 a變數在記憶體中的位址, 可以通過*pint 解引用來效果 變數a 的值

*pint = 20;
正常來說 pint 指標變數可以直接 使用pint, 但是, 直接使用的是記憶體位址,所以,通過解引用,*pint 來修改變數 a 的值,注意, 不能對空指標解引用, 因為空指標什麼都沒指向。

指標型別

指標也是有資料型別的, 獲取int型別的變數的指標使用 int 來 定義指標,string 就用string 如:

int a = 10;

int *pint = &a;

string b= "aaa";

string *pstring = &b;

如果指標型別和要獲取指標的變數型別不一樣會產生異常的

指標初始化

int a = 10;

int *pint;

如上,定義乙個pint指標, 如果沒有在定義的時候給它資料的話就會隨機指向一塊記憶體位址,所以 ,如果定義的時候不賦值的話就該 將指標設定為空指標,

int *pint = nullptr;
c++中由程式自動向作業系統申請的記憶體就是棧記憶體,,它有自己的gc**, 如, 在函式中定義的區域性變數就是使用棧記憶體,當函式執行完畢後會自動的釋放記憶體,不需要程式設計師管理

在程式中需要new 建立出來的變數就是使用堆記憶體, 這些記憶體需要程式設計師手動建立和**, 不像堆記憶體的變數,程式結束會自動**,可以跨函式, 不像堆記憶體的資料,程式結束就**了, 需記得每乙個new 都要 delete ,不然會造成記憶體的洩漏;

動態記憶體建立

int a = new int(10);
申請記憶體空間型別要和資料型別一致

inline , 當函式的**較少的時候可以使用inline 在其他函式中呼叫該函式的時候相當於 將整個函式體的**插人呼叫語句處,就像整個函式體在呼叫處被重寫了一遍一樣, 這樣的好處在於不會產生額外呼叫函式的開銷, 不會產生壓棧,彈棧開銷

自學C day11 指標

int a 10 int p a 初始化必須是用位址給它初始化 使用 p 250 指標的解引用 間接引用 p 將p 變數的內容取出,當成位址看待,找到該位址對應的記憶體空間 如果做左值 存資料到空間中 如果做右值 取出空間中的內容 void 萬能指標 泛型 指標的大小與型別無關,只與當前使用的平台架...

C Day4 指標和結構體

二 結構體 include using namespace std intmain 32位作業系統 64位作業系統 4位元組 所有型別int float double 8位元組 所有型別 int s int 0x1124 cout 指標的值 sconst既修飾指標又修飾常量。const int co...

C語言(九) 指標(3)指標與const

表示一旦得到了某個變數的位址,不能再指向其他變數 int i 0 int const q i q是 const q 20 ok q error表示不能通過指標去修改這個變數 int i 0 int j const int p i const int p 等同於 int const p p 20 er...