Как передать указатель на массив в функции, изменить его и правильно вернуться?

62
1

Я пытаюсь передать указатель на массив в функции и вернуть его обратно. Проблема в том, что после правильной инициализации функция возвращает NULL-указатель. Может ли кто-нибудь сказать мне, в чем проблема с моей логикой?

Вот моя функция, где объявлен массив:

void main()
{
int errCode;
float *pol1, *pol2;
pol1 = pol2 = NULL;
errCode = inputPol("A", pol1);
if (errCode != 0)
{
return;
}

// using pol1 array

c = getchar();
}

И вот функция с инициализацией:

int inputPol(char* c, float *pol)
{
pol= (float *) calloc(13, sizeof( float ) );
while( TRUE )
{
// While smth happens
pol[i] = 42;
i++;
};
}

спросил(а) 2021-01-25T17:07:28+03:00 4 месяца, 3 недели назад
1
Решение
108

Вам нужно передать адрес pol1, так что главное знает, где выделенная память:

void main()
{
int errCode;
float *pol1, *pol2;
pol1 = pol2 = NULL;
errCode = inputPol("A", &pol1);
if (errCode != 0)
{
return;
}

// using pol1 array

c = getchar();
}

int inputPol(char* c, float **pol)
{
*pol= (float *) calloc(13, sizeof( float ) );
while( TRUE )
{
// While smth happens
(*pol)[i] = 42;
i++;
};
}

ответил(а) 2021-01-25T17:07:28+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема