Массив как возвращаемое значение функции
Мне нужно создать функцию, которая возвращает массив, но при этом не пользоваться динамической памятью и глобальными переменными. Например: функция принимает массив как параметр, переписывает из него все отрицательные числа в новый массив и возвращает указатель на этот массив.
int* NewLine(int* sr, int* nr)
{
int nr[20]; // выделяем память на новый массив
int* p = nr;
...
return nr;
}
- Первый параметр - массив, в котором будем искать отрицательные числа.
- Второй - адрес, по которому в масив записываем найденые елементы.
Но какие фактические параметры мне нужно передавать при вызове функции? Первый - собственно сам анализируемый массив, а какой второй?
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
int NewLine(int* sr, int srCount, int* nr) {
int i, nrCount = 0;
// walk sr and write negative elements to nr, keeping count
for (i = 0; i < srCount; i++) {
if (sr[i] < 0)
nr[nrCount++] = sr[i];
}
return nrCount;
}
int countAll, countNeg;
int all[100], neg[100];
// input/assign countAll and corresponding number of all[] elements
// ...
countNeg = NewLine(all, countAll, neg);
или
int* NewLine(int* sr, int srCount, int* nr, int* nrCount) {
int i;
*nrCount = 0;
// walk sr and write negative elements to nr, keeping count
for (i = 0; i < srCount; i++) {
if (sr[i] < 0)
nr[*nrCount] = sr[i];
*nrCount = *nrCount + 1;
}
return nr;
}
int countAll, countNeg;
int all[100], neg[100];
// input/assign countAll and corresponding number of all[] elements
// ...
NewLine(all, countAll, neg, &countNeg);