私には奇妙に聞こえるコードサンプルを読んでいます:ダブルポインタのブール値
メソッドの引数はdoubleへのポインタです。メソッド本体には、この引数ポインタが与えられているかどうかをテストする条件文があります(空かどうか)。ポインタがどのようにbool値を持つことができるのか、存在しないポインタ(NULL?0?)の構文は何ですか?ここ
は、メソッドの実装である:C++で
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]);
}