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 这样的有效地址?

4

3 回答 3

2
  1. pExamplePtr未初始化,因此不一定指向0.

  2. pExampleArray是一个数组,而不是一个指针,所以它也不会“指向”任何地方。如果要pExampleArray在表达式中使用,它将衰减为指向其第一个元素的指针 - 相当于&pExampleArray[0].

于 2013-07-19T17:23:24.627 回答
2

指针 pExamplePtr 确实有一个有效的地址。也许您的意思是它没有指向任何东西,因此没有指向 0x00000000 ,但事实并非如此。

同样关于pExampleArray[4],这是一个数组,而不是指针,它确实有一个有效地址,就像你的第一个变量一样。

于 2013-07-19T17:26:03.063 回答
1

pExampleArray下面声明的对象的地址:

char pExampleArray[4];

&pExampleArray并且它是一个有效的地址。

pExamplePtr下面声明的对象的地址:

char *pExamplePtr;

is&pExamplePtr并且它是一个有效的地址,不同于NULL. 您似乎混淆了指针值,它pExamplePtr在初始化或赋值之前是不确定的,并且是指针对象的地址。

于 2013-07-19T17:23:33.350 回答