在我的系统中,未定义的指针的默认值为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?
答案 0 :(得分:2)
pExamplePtr
未初始化,因此不一定指向0
。
pExampleArray
是一个数组,而不是一个指针,所以它也不会“指向”任何地方。如果您在表达式中使用pExampleArray
,它将衰减为指向其第一个元素的指针 - 相当于&pExampleArray[0]
。
答案 1 :(得分:2)
指针pExamplePtr确实具有有效地址。也许你想说的是它没有指向任何东西,因此也没有指向0x00000000,但情况不一定如此。
同样关于pExampleArray[4]
,这是一个数组,而不是一个指针,它确实有一个vaild地址,就像你的第一个变量一样。
答案 2 :(得分:1)
下面声明的pExampleArray
对象的地址:
char pExampleArray[4];
是&pExampleArray
,是有效的地址。
下面声明的pExamplePtr
对象的地址:
char *pExamplePtr;
是&pExamplePtr
,它是一个有效的地址,与NULL
不同。您似乎混淆了指针值,它是pExamplePtr
并且在初始化或赋值之前是不确定的,并且是指针对象的地址。