Ошибка компилятора?

 

Народ, попробуйте у себя скомпилировать эту функцию:

void ARRAY (int Array[])
 {
  int i = 0;
  ArrayResize (Array, 1);
  Array[i] = 1;
 }

У меня почему-то ошибку выдаёт:

'Array' - array item cannot be assigned

Массив - пункт массива не может быть назначен

=============

Разве так нельзя делать?

Посмотрел старые свои функции. Код похожий и работает, а этот не компилируется.

Странно...


 

Сделайте так:

void ARRAY (int & Array[])
 
амперсенд добавь, недавно с какой то свежей версии для массива требуется явное указание амперсенда.
 
Спасибо! Работает. С амперсендом не эксперементировал.
 
кстати - старые проги с изменнием элементов массива в функциите теперь не проходят компиляцию))))
 

Посмотрел у себя более внимательно.

Оказалось, что все функции с массивами-параметрами по ссылке!!!

Даже не заметил и не придал этому значения. Наверно дня через три дошло бы до меня. :-))

 
Korey писал (а) >>
амперсенд добавь, недавно с какой то свежей версии для массива требуется явное указание амперсенда.

С какой именно? Не могли бы уточнить? Вернее, меня интересует билд, в котором не надо было указывать амперсанд.

 
Странное явление. От ArrayResize () нет ошибки, от присваивания есть. Притом, что простым переменным-аргументам функции можно делать присваивание.
 

Оказывается без амперсенда можно компилировать без ошибок, если массив только читается в функции.

Если его надо заполнять, то ссылка обязательна.

 
KimIV писал (а) >>

С какой именно? Не могли бы уточнить? Вернее, меня интересует билд, в котором не надо было указывать амперсанд.

где то в январe этого года была ветка о передаче простой переменной из функции как параметра.
тогда, как мне запомнилось Renat (?) отвечая на вопрос автора ветки предложил описать простую переменную как формальный массив
без амперсенда (!), т.к. массив возвращает значение.
Искал не могу найти.
На тот период т.е. на январь, массивы возвращали значение без амперсенда.
Потом был спор с админами об адресной арифметике.
и ...компилятор стал требовать явное обяъявление массива как ссылки.
т.е. где то с 215-й (214?) версии.
я еще подумал - а как же старый софт но никто не жаловался.

 
Korey писал (а) >>

где то в январe этого года была ветка о передаче простой переменной из функции как параметра.
тогда, как мне запомнилось Renat (?) отвечая на вопрос автора ветки предложил описать простую переменную как формальный массив
без амперсенда (!), т.к. массив возвращает значение.
Искал не могу найти.
На тот период т.е. на январь, массивы возвращали значение без амперсенда.
Потом был спор с админами об адресной арифметике.
и ...компилятор стал требовать явное обяъявление массива как ссылки.
т.е. где то с 215-й версии.
я еще подумал - а как же старый софт но никто не жаловался.

Вы не путаете со строками? Подумайте.

Причина обращения: