gpt4 book ai didi

c++ - 双指针的 bool 值(存在/是否为空)

转载 作者:行者123 更新时间:2023-11-27 23:26:00 27 4
gpt4 key购买 nike

我正在阅读一些我觉得很奇怪的代码示例:

方法参数是一个指向 double 的指针。在方法体中,有一个条件语句测试这个参数指针是否给定(是否为空)。我想知道指针怎么会有 bool 值,以及不存在的指针(NULL?0?)的语法是什么。

方法实现如下:

bool OMethod::initSim(double* alpha_)
{
int i, j;
const double * cparameters = fun->getParameters();
simplex = OMatrix::allocMatrix(npts,ndim,true);
sSum = new double[ndim];
funcEvals = new double[npts];
double *alpha = 0;
if(!alpha_) {
alpha = new double[ndim];
for(i = 0; i< ndim; ++i) {
if(cparameters[i] == 0)
alpha[i] = 0.2f;
else
alpha[i] = 0.1 * cparameters[i];
}
}
else
{
alpha = alpha_;
}

for(j = 0; j < npts; ++j)
{
for(i = 0; i < ndim; ++i)
sim[j][i] = cparameters[i]
}

delete [] cparameters;

for(j = 0; j < ndim; ++j)
{
sim[j + 1][j] += alpha[j];
}

computeS();

for(i = 0; i < npts; ++i)
{
funcEvals[i] = evalFunc(simplex[i]);
}

最佳答案

在 C++ 中,当指针值不等于零时,在 bool 上下文中(例如,在 if 测试或 ! 表达式中)被认为是“真”,即它不为空。所以,!alphaalpha == 0alpha == NULLalpha == nullptr 相同.

关于c++ - 双指针的 bool 值(存在/是否为空),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9480856/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com