С существующей сигнатурой функции невозможно безопасно изменить значения. Обычно вы делаете что-то вроде
myarray[0] = 0;
myarray[1] = 1;
//etc
Есть и много других подходов к этому, в зависимости от того, как хранятся значения, которые нужно поместить в массив (может пригодиться std::copy
или std::generate
Вот). Но сейчас у вас нет способа узнать, где заканчивается массив.
Чтобы исправить это, вам нужно как-то передать длину массива функции. Один из способов - просто передать дополнительный параметр size_t length
. Возможно, лучший способ, который работает в духе итераторов C ++, - написать сигнатуру типа
int myfunc(int* begin, int* end);
и назовите что-нибудь вроде
myarray[3] = {4, 5, 6};
myfunc(myarray, myarray + sizeof(myarray) / sizeof(myarray[0]));