c++用0表示空指標,c用(void *)0表示空指標,c++對null的定義:
#
undef
null
/* in case has defined it. */
#ifdef
__gnug__
#define
null
__null
#else
/* g++ */
#ifndef
__cplusplus
#define
null((
void*)
0)#else
/* c++ */
#define
null0#
endif
/* c++ */
#endif
/* g++ */
#endif
/* null not defined and or need null. */
#undef
__need_null
int
*p =0;
// 方法一
int*p =
null
;// 方法二,或int *p; p = null;
cout << p << endl;
//可看到p指向的記憶體位址為0
#
include
using
namespace std;
void
func
(void
* p)
void
func
(int p)
intmain()
注:編譯器不同,出現的結果也會不同。一種是由於二義性編譯出錯,另一種是輸出"p is a num"。具體原因應該與編譯器定義實現有關,有待深究。
解決:c++11中引入了關鍵字nullptr來指代空指標。
func
(nullptr
)//輸出:p is a pointer
無型別指標(void*):沒有指向型別的指標。
int a =
3, b =4;
int*p_b =
&b;void
*p =
(void
*)a;
void
*q = p_b;
printf
("%d %d\n"
,&a,
&b);
printf
("%d %d\n"
, p, q)
;//結果
//6422240 6422236
//3 6422236
野指標,空指標和無型別指標
一.野指標 所謂的野指標指的是乙個指標變數指向了不可使用的記憶體空間。產生野指標三個原因 1 指標變數建立時候沒有被初始化 任何指標變數在建立的時候,不會自動成為null指標,它的預設值是隨機的,因此該指標就會成為乙個野指標,可能指向一塊不可使用的記憶體空間。例如char p 這樣建立乙個指標p,指...
空指標 野指標和無型別指標
野指標 指向 不可預知。這個 野指標 指向的記憶體空間,可能是某個重要的資料或其它程式,甚至是系統的重要記憶體位置.再次訪問時造成的危害是不可預知的 容易被病毒或黑客攻擊.在這個 野指標 指向的記憶體中放點 東西 你使用這個 野指標 時,自然中招.避免方法 1.建立乙個指標時,位址指向明確位址或者n...
C 中野指標和空指標和無型別指標
一.野指標 所謂的野指標指的是乙個指標變數指向了不可使用的記憶體空間。產生野指標三個原因 1 指標變數建立時候沒有被初始化 任何指標變數在建立的時候,不會自動成為null指標,它的預設值是隨機的,因此該指標就會成為乙個野指標,可能指向一塊不可使用的記憶體空間。例如char p 這樣建立乙個指標p,指...