有人能解释一下为什么指针没有初始化到NULL
吗
示例:
void test(){
char *buf;
if (!buf)
// whatever
}
程序不会单步执行if,因为buf
不是null。
我想知道为什么,在什么情况下,我们需要一个带垃圾的变量,特别是指向内存中垃圾的指针?
发布于 2009-12-16 06:21:56
因为初始化需要时间。在C++中,您应该对任何变量做的第一件事就是显式地初始化它:
int * p = & some_int;
或者:
int * p = 0;
或者:
class A {
public:
A() : p( 0 ) {} // initialise via constructor
private:
int * p;
};
发布于 2009-12-16 06:28:45
此外,我们确实有一个警告,当你搞砸它的时候:“在赋值之前可能使用”或类似的动词,这取决于你的编译器。
你编译的时候会有警告,对吧?
发布于 2009-12-16 06:28:11
在极少数情况下,变量被取消初始化是有意义的,而且默认初始化的成本很小,那么为什么要这样做呢?
C++不是C89。见鬼,连C都不是C89。您可以混合声明和代码,因此应该将声明推迟到有合适的值进行初始化时再进行声明。
https://stackoverflow.com/questions/1910832
复制相似问题