void* 類型指針:通用變體類型指針;可以不經轉換,賦給其他指針,函數指針除外;malloc返回的就是void*類型。

NULL指針:是一個標準規定的宏定義;#define NULL ((void *) 0) 用來表示空指針常量;零指針:指針值為0,零值指針,沒有存儲任何內存地址的指針;可以使任意一種指針類型,eg:void * ;int * ;double *;

空指針:指針賦值為0;0*7;3-3等之後,指針即變成空指針;即:空指針不指向任何實際的對象或者函數;NULL指針和零指針都是空指針。

野指針:指向垃圾內存的指針;(1)指針變數沒有初始化(2)指針被delete或者free之後沒有置為空(3)指針操作超越了變數的範圍懸垂指針:指向曾經存放對象的內存,但是該對象已經不存在了;delete操作完成後的指針就是懸垂指針,此時需要將指針置為0變為零值指針;

在vc的debug模式下,對於未初始化的棧內存全部填成0xcc,對應於MBCS編碼中漢字字元串看就是燙燙燙燙;對於未初始化的隊內存全部填成0xcd,對應於漢子字元串看就是屯屯屯屯;release模式下直接就是內存中隨機的數據。在查閱資料的時候,無意發現了這篇博客。發現寫的很詳細,適合學習。但是由於博客排版的問題,並不是很方便學習,所以,秉著學習的態度,將次博客轉載到這裡,方便大家共同學習進步。(在轉載過程中,除了排版的修正外,適當的做了些修改,還望見諒。)

文章不錯,不敢獨享!

第一章。指針的概念指針是一個特殊的變數,它裡面存儲的數值被解釋成為內存里的一個地址,即一個能夠存放內存地址的變數。程序中引入指針,並不是對指針地址做什麼處理,而是要通過指針地址,來對這個地址空間內的數據進行處理,所以我們提到指針,必然會涉及到指針所指空間內的數據(如類型等)特性。要搞清一個指針需要搞清指針的四方面的內容:指針的類型,指針所指向的類型,指針的值或者叫指針所指向的內存區,還有指針本身所佔據的內存區。

讓我們分別說明。

先聲明幾個指針放著做例子:例一:(1)int *ptr;

(2)char *ptr;

(3)int **ptr;(4)int (*ptr)[3];(5)int *(*ptr)[4];1。 指針的類型。從語法的角度看,你只要把指針聲明語句里的指針名字去掉,剩下的部分就是這個指針的類型。這是指針本身所具有的類型。讓我們看看例一中各個指針的類型:(1)int *ptr; //指針的類型是int *(2)char *ptr; //指針的類型是char *(3)int **ptr; //指針的類型是 int **(4)int (*ptr)[3]; //指針的類型是 int(*)[3](5)int *(*ptr)[4]; //指針的類型是 int *(*)[4]我們可以這樣理解,一個基本的數據類型(包括結構體等自定義類型)加上」 * 「號就構成了指針的類型。這個類型定義的變數大小是一定的,與」 * 「號前面的數據類型無關,」 * 「號前面的數據類型只是說明指針所指向的內容里存儲數據的類型。

微信公眾號:程序員巴衛

創一個小群,供大家學習交流聊天

如果有對學C++方面有什麼疑惑問題的,或者有什麼想說的想聊的大家可以一起交流學習一起進步呀。

我偶爾也會直播給大家手把手編程

也希望大家對學C++能夠持之以恆

如果你想要學好C++最好加入一個組織,這樣大家學習的話就比較方便,還能夠共同交流和分享資料,給你推薦一個學習的組織:大牛小白C++組織 可以點擊編程二字,可以直達


推薦閱讀:
相关文章