2010-08-01 73 views
2

我有一个非常简单的问题。如何在C++中初始化一个整型指针?

我想写下面的一行代码2行:

IplImage *image = 0; 

,如:

IplImage *image; 
image = 0; 

我想知道我写的是正确的,否则我想知道如何写出正确的(两行)。

谢谢

+3

为什么你想要两条线? – GManNickG 2010-08-01 05:45:30

+3

为什么你称之为“整数指针”?你有一个指向'IplImage'结构的指针,而不是'int'。文字'0'由C++语言定义为NULL指针的源代码表示法,它不用作整数。使用任何其他整数将导致编译错误。 – 2010-08-01 05:45:55

+1

如果不知道自己想要做什么,就没有办法说它是否“正确”。你的代码是正式的。然而有一个强烈的怀疑,它不会做你想做的事情,因为你在问题标题中提到某种“整数指针”,而代码中没有“整数指针”。 – AnT 2010-08-01 05:48:50

回答

5

完全正确。但是如果你没有很好的理由这样做,我建议把它作为一个单独的行来声明和初始化它。更明显的是,你不太可能错过以这种方式初始化指针。

1

这是正确的。你为什么不试试呢?

+4

那么,可以说,大多数每个编译器都有扩展名;仅仅因为它的作用并不意味着它按照标准是有效的。 – 2010-08-01 06:17:34

1

写作

IplImage *image = 0; 

似乎更清晰,因为它是显而易见的是一个指针使用。

随着

IplImage *image; 
image = 0; 

可能必须在第一和第二线之间的代码附加行。第二行(image = 0)对我来说似乎不太清楚。如果您更喜欢第二个选项(两个班轮),可能将变量重命名为pImage可提高可读性。

0

Iplimage是在opencv中定义的结构。 您可以使用下面的代码初始化指针:

Iplimage* image=cvCreateImage(width,height,channels); 
0

在C++

IplImage *image(NULL); 

竟被也是允许的,即使它可能会产生混淆你的图像通过调用与构造函数分配第一个参数设置为NULL。

但是,在1行中声明+初始化仍然是推荐和几乎所有情况。唯一的情况是,我发现在线路太长时,最好在两条线路中启动。