Все зависит от того, чего вы хотите достичь в итоге.
(1) Если ваша функция function
предназначена для использования с массивами времени выполнения, то вам нужно передать указатель на первый элемент массива. Это достигается с помощью следующих эквивалентных деклараций
int function(int *num)
или
int function(int num[])
Внутри функции вы должны получить доступ к переданному массиву как
num[i] = rand() % 10;
И вы вызываете свою функцию как
function(num);
Конечно, когда размер массива является значением времени выполнения, имеет смысл также передать этот размер функции, что означает, что ваша функция должна иметь следующий интерфейс
int function(int num[], size_t n)
И реализовать его для массива размером n
вместо жесткого кодирования 10
непосредственно в вашей реализации.
(2) Если ваша функция function
предназначена для использования с массивами фиксированного размера во время компиляции (в данном случае 10
), тогда лучше будет передать указатель на весь массив. Это достигается следующей декларацией
int function(int (*num)[10])
Внутри функции вы должны получить доступ к переданному массиву как
(*num)[i] = rand() % 10;
И вы вызываете свою функцию как
function(&num);
Так что это либо (1), либо (2).
То, что у вас есть в вашем коде, выглядит как смесь этих двух подходов. Точнее, ваш код выглядит как попытка реализовать second подход, но в нем отсутствуют некоторые важные скобки:)
Большинство ответов, данных вам до сих пор, предлагают использовать первый подход. Однако, учитывая, что размер массива на самом деле является постоянной времени компиляции в вашем случае, я бы предложил придерживаться второго подхода.