Вы должны просто передавать указатели (поскольку, если вы передаете массивы в функцию, что; действительно, в любом случае передается указатель). Кроме того, вы не можете вернуть массив - опять же, просто верните указатель:
int* _addInts(int *x, int *y); // equivalent to: int* _addInts(int x[], int y[]);
Вам также нужно будет указать количество элементов, которые будут каким-либо образом переданы. Вам может подойти что-то вроде следующего:
int* _addInts(int *x, int *y, size_t count);
Кроме того - не попадает в ловушку попытки использовать sizeof
для параметров массива, так как они действительно указатели в C:
int* _addInts(int x[], int y[])
{
// the following will always print the size of a pointer (probably
// 4 or 8):
printf( "sizeof x: %u, sizeof y: %u\n", sizeof(x), sizeof(y));
}
Это одна из причин, почему я предпочел бы, чтобы параметры объявлялись как указатели, а не как массивы - потому что они действительно будут указателями.
См. Существует ли в C стандартная функция, которая возвращает длину массива? для макроса, который возвращает количество элементов в массиве для фактических массивов и вызывает ошибку компилятора (включено большинство компиляторов) большую часть времени, когда вы пытаетесь использовать его в указателях.
Если ваш компилятор GCC, вы можете использовать хитрость Linux: Эквиваленты _countof MSVC в других компиляторах?