C語言 C語言指標鐵律之一 指標也是一種資料型別

2021-09-26 05:32:59 字數 1178 閱讀 6937

指標也是一種變數,占有記憶體空間,用來儲存記憶體位址。

char *p1 = 0x100;
這裡分配了4個位元組的記憶體。

在指標宣告時,符號 * 表示所宣告的變數為指標。

在指標使用時,符號 * 表示操作指標所指向記憶體空間中的值

*p 相當於通過位址(p變數的值)找到一塊記憶體,然後對記憶體進行操作。

*p 放在等號的左邊相當於是給記憶體賦值,即把值賦給乙個記憶體空間,也就是寫記憶體

*p 放到等號的右邊相當於從記憶體中獲取值然後賦值給其它變數,也就是讀記憶體

不斷的給指標賦值,相當於不停的改變指標的指向

– 給p賦值p=0x1111;只會改變指標變數值,不會改變所指的內容。

– 給 *p 賦值 *p = 『a』,不會改變指標變數的值,只會改變所指記憶體塊的值。

– 保證指標所指向的記憶體空間可被修改才可以修改。(比如存在全域性區的量:字元等是不可以修改的,執行程式可能會導致宕機)

指標是一種資料型別,是指它指向的記憶體空間的資料型別。

– 指標做函式引數,形參有多級指標時,從編譯器的角度,只需要分配4個位元組的記憶體。(32bit平台)

– 當我們真正使用記憶體時,我們才關心指標所指向的記憶體是一維的還是二維的。

– 指標步長(p++)是根據所指記憶體空間的資料型別來確定。

p++ = p + sizeof§ 要根據所指記憶體的型別確定,而與所指的記憶體空間是多少無關。

野指標產生的原因:指標變數和它所指向的記憶體空間變數是兩個不同的概念,釋放了指標所指的記憶體空間,但是指標變數並沒有重置成null,造成釋放的時候如果想通過if(p1 != null)無法判斷

避免野指標的方法:

① 定義指標的時候,初始化成null

② 釋放指標所指向的記憶體空間後需要把指標重置成null

C語言指標學習 一 指標是什麼

僅供自己學習使用,謝謝!指標的定義 位址 記憶體單元的編號 從0開始的非付整數 在32位機器上,記憶體最大為4g 2 32個位元組 指標 指標就是位址,位址就是指標 指標變數就是存放記憶體單元編號的變數,或者說指標變數就是存放位址的變數 指標和指標變數是兩個不同的概念 需要注意的是,我們平時在敘述的...

c語言指標初探 一 指標與陣列

一 陣列名指標 c 編譯器將陣列名解釋為指標 include using namespace std int main cout sz 編譯器將陣列名解釋為陣列記憶體區域的首位址,對一維陣列來說要實現對某個元素的訪問,既可以用陣列名 下標的形式,也可以用間接引用 陣列名 偏移 陣列元素的指標形式 指...

C語言指標初探 一 指標與函式

1.通過指標引數申請動態記憶體。2 利用函式返回值申請動態記憶體。3 返回棧記憶體的 或靜態儲存區的 指標或引用。以上知識請參考 記憶體管理。4 函式引數的三種傳遞方式 1 值傳遞 這個應該簡單吧,來看個經典程式 include include using namespace std void sw...