我有double** mat
,我想测试它是否已经初始化。如果没有,我为它分配内存空间。这管用吗? :
if(!mat)
{
mat = new double*[dim1];
for(int i = 0 ; i < dim1 ; i++)
mat[i] = new double[dim2];
}
我使用if(! mat)
测试了什么?
感谢
答案 0 :(得分:2)
你在检查什么:
if (!mat)
如果位置mat
指向的是NULL
(0)。
只要指针的默认值为零,如果你已经像这样声明了你的指针,那么这个工作正常:
double ** mat = NULL;
答案 1 :(得分:0)
if (!mat)
几乎是
的简写if (mat==nullptr)
(nullptr是C ++ 11关键字;您可以使用NULL宏或只使用文字0。)
当然,这只有在“mat”实际上是用nullptr初始化时才有意义,例如因为它是一个全局/静态变量(对于这些变量自动进行jhappens),或者你用nullptr初始化它。
就个人而言,我不喜欢像“!mat”这样的结构。我总是将nullptr比较显式化,因为我们在这里讨论指针,而不是布尔值。
答案 2 :(得分:0)
在检查之前,必须使用NULL(0)或nullptr(对于c ++ 11)值初始化mat
指针。 if (!mat)
检查指针值是true还是false。 NULL或nullptr始终为false值,其他为true值。它就像if (mat == NULL)
或if (mat == nullptr)