C 空指標與無型別指標

2021-10-10 23:36:47 字數 1441 閱讀 7071

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,指...