Похоже, вам нужно вернуть 2 отдельных значения: количество четных чисел в массиве b и адрес вновь выделенной памяти, в которой хранятся исключительно эти четные числа.
Поскольку вы не можетевернуть несколько переменных, одно решение, которое вносит минимальные изменения в ваш код, будет следующим:
int *paire(int *d, int length, int& counter) {
counter = 0;
// rest of your function remains unchanged
// ...
}
int main() {
int b[8] = {1,2,3,4,5,6,7,8};
int evenNumbers;
int *array1 = paire(b,8, evenNumbers);
for (int i=0; i<evenNumbers; i++) {
cout<<array1[i];
}
delete [] array1;
return 0;
}
В качестве альтернативы, вы можете вернуть значение в counter
и отправить ссылку на переменную int*
в видеаргумент paire
функции.Или вы можете объявить paire
для типа возврата void
и использовать ссылки на передать обратно оба значения.