2013-07-19 20 views
0

在我的系統中,未定義的指針的默認值爲0x00000000。未定義數組的默認地址始終是有效地址嗎?

void Demo() 
{ 
    char cData; 
    char *pExamplePtr; 
    char pExampleArray[4]; 

    &cData <--- Address is 0x12345678 
    pExamplePtr <--- Value of pointer is 0x00000000 
    pExampleArray[0] <--- Address is ??? 
} 

pExampleArray的默認地址是什麼?它是0x00000000還是它有一些有效的地址,如cData?

回答

2

指針pExamplePtr的確有一個有效的地址。也許你想說的是它並不指向任何東西,因此0x00000000,但事實並非如此。

同樣在pExampleArray[4]方面,這是一個數組,而不是指針,它的確有一個vaild地址,就像第一個變量一樣。

+0

這就是我的意思。這是我正在尋找的答案。謝謝。 – user1172282

2
  1. pExamplePtr未初始化,所以它並不一定指向0

  2. pExampleArray是一個數組,不是指針,所以它也不會「指向」任何地方。如果在表達式中使用pExampleArray,則會衰減爲指向其第一個元素的指針 - 相當於&pExampleArray[0]

1

pExampleArray對象的地址如下聲明:

char pExampleArray[4]; 

&pExampleArray,這是一個有效的地址。

pExamplePtr對象的地址如下聲明:

char *pExamplePtr; 

&pExamplePtr,這是一個有效的地址,比NULL不同。您似乎混淆了指針值,即pExamplePtr,並且在初始化或賦值之前以及指針對象的地址是不確定的。