переменная используется без инициализации при передаче массива

0
void initPLBP(double *mat)
{
    if (...)
    {
        int pcaDim = 10;
        int featureDim = 80;
    }
    mat = new double[10 * 80];
}


void main()
{
    double* pcaMat;
    initPLBP(pcaMat);
}

когда я запускаю код, он говорит, что "переменная" pcaMat "используется без инициализации". вопрос в том, что я не могу выделить память для pcaMat в основной функции (по другим причинам). есть ли какое-нибудь решение? Спасибо

  • 2
    Прежде всего, используйте int main , а не void main . Во-вторых, все, что не является ссылкой, передается по значению.
  • 0
    Я думаю, вы должны понимать, что назначение mat не повлияет на pcaMat . Пожалуйста, посмотрите на то, что передается по значению.
Теги:

1 ответ

2

То, что означает компилятор, это переменная "pcaMat" (указатель) не инициализируется, поэтому она не указывает на что-либо перед использованием. Не плацдарм.

void initPLBP(double *&mat)
{
    if (...)
    {
        int pcaDim = 10;
        int featureDim = 80;
    }
    mat = new double[10 * 80];
}

int main()
{
    double* pcaMat = 0;
    initPLBP(pcaMat);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню