Константное значение - это значение, которое известно в этом месте кода в момент компиляции. Т. е. размер arrr должен определяться в момент компиляции, а не выполнения. В современном С (без плюсов) твой код выполнится, в С++ -нет (не знаю, как в последнем стандарте). Так что если нужен массив заранее неизвестного размера, то, как сказали выше, new / delete.
если const то оно наверно не может быть использована а потом инициализировано, в общем раз не пашет, значит где то наверно должна инициализирована переменная size где хрен знает или нужно const убрать просто, или делать size эту переменную динамической загугли динамический массив и то хрен знает как его в функции сделать и будет ли пахать. int num; // размер массива cout << "Enter integer value: "; cin >> num; // получение от пользователя размера массива int *p_darr = new int[num]; // Выделение памяти для массива delete [] p_darr; // вроде обязательно удалять если она уже не нужна или при выходе из программы.