2013-09-21 49 views
0

,如果我有一個指針a = null; 我初始化另一個指針可以說int * b;可以設置一個指向另一個指針,其值爲NULL

如果我設置b = a,這將只是給我b = null

或者這會給我一個編譯錯誤?

我知道它的一個簡單的問題,但我想仔細檢查我的理解

+3

也許你可以試試嗎? –

+0

'null'和'NULL'是兩個不同的標識符,除非你自己定義'null',否則C中沒有定義'null'。你是不是指'NULL'? –

回答

4
int *a = NULL 
int *b = a; 

當然代碼編譯和工作正常。指針b的值爲NULL,與a相同。

請注意,當您在代碼中引用空指針時,它是NULL0,而不是null。或者更好的,在C++ 11中使用nullptr

+0

'nullptr'本身就是一個關鍵字,所以'std ::'限定是錯誤的('nullptr',但是'std :: nullptr_t') – milleniumbug

+0

@milleniumbug好知道,修正。 –

0

null是a的值,通過做b = a,b將取a,null的值。

所以沒有錯誤。這是當你解除引用指針(使用*)時,如果地址(指針的值)無效,可能會發生問題。

相關問題