Списки в Python против массивов в C [закрыто]

Правильно, что double ** не может быть неявно преобразован в const double **. Однако он может быть преобразован в const double * const *.

Представьте себе этот сценарий:

const double cd = 7.0;
double d = 4.0;
double *pd = &d;
double **ppd = &pd;
const double **ppCd = ppd;  //this is illegal, but if it were possible:
*ppCd = &cd;  //now *ppCd, which is also *ppd, which is pd, points to cd
*pd = 3.14; // pd now points to cd and thus modifies a const value!

Итак, если ваша функция не намерена изменять какой-либо из указателей, измените это взять const double * const *. Если он намеревается внести изменения, вы должны решить, являются ли все его модификации безопасными, и, таким образом, const_cast можно использовать, или вам действительно нужно пройти в const double **.

-8
задан BoRRis 13 December 2017 в 11:15
поделиться