У вас неопределенное поведение в ваших циклах:
while(field[i] != '\0')
Вы читаете, пока не достигнете нулевого завершенного символа. Очевидно, вы никогда не знаете, когда достигнете этого, и это не будет концом вашего массива. Таким образом, вы пересекаете границы вашего указателя и вводите неопределенное поведение land.
С той стороны вы не можете найти размер вашего массива, потому что при передаче в функцию массив распадается науказатель, и вы не можете найти его размер с помощью sizeof(field)/sizeof(int)
.
Чтобы решить вашу проблему, передайте длину вашего массива функции или в идеальном случае используйте один из контейнеров STL, например std :: vector или std :: array .
Первый цикл будет выглядеть так:
for(int i = 0; i < field.size(); ++i) {
field[i] = field[i] * field[i];
i++;
}
И сигнатура функции может быть:
void randomizedField(std::vector<int>& field)