Visual C ++ 6.0中指针的默认值

时间:2009-08-26 13:06:00

标签: visual-c++

Visual C ++ 6.0中指针的默认值是什么。

如果重要,我的问题特别提到堆栈上的变量。

在这种情况下,myArray最初是一个NULL指针还是它有一个未定义的值?

double* myArray;

6 个答案:

答案 0 :(得分:6)

未定义。
C ++没有为未初始化的指针定义默认值。

如果您正在使用visual studio进行调试,那么未初始化变量的初始值有时类似于0xcdcdcdcd。此值根据变量的位置而变化 - 在堆栈上或堆上。然而,在发布版本中并非如此,您不能以任何方式依赖它。

Here's some more information关于这些价值观。

答案 1 :(得分:2)

这是垃圾。

答案 2 :(得分:2)

未定义。即使VC ++ 6.0绝对保证使用特定值,C ++标准仍然不会定义它。您应该不惜一切代价避免编译器特定功能。你现在可能不认为你需要将代码移动到另一个编译器,但是迟早你会,它会破坏。

这很难说:

double* myArray = NULL;

答案 3 :(得分:0)

你的myArray会有垃圾值

答案 4 :(得分:0)

Visual C ++ 6中没有指针的默认值。如果未声明,则指针未初始化,因此该值将是未定义的(表示“垃圾”)。这就是为什么建议在声明时初始化指针(或者在类的指针成员的构造函数的初始化列表中)作为最佳实践的原因。

答案 5 :(得分:0)

指针在运行时定义为占用内存中的某个特定位置。它的初始值将由恰好位于该位置的任何位模式定义。没有办法事先确定它。

如其他地方所述,使用初始值null或者对您最方便的任何内容声明它。