Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Lorenzo_LAMAS, Вы писали:
LVV>>>Именно поэтому можно писать присваивание для массива без всяких операций взятия адреса.
LVV>>>А также при передаче параметра в функцию имя массива на месте параметра-указателя пишется без всяких амперсандов.
L_L>>Потому, что если Вы напишете с & -то получите адрес массива, т.е. rvalue типа int (*)[размер]
LVV>>>Еще у Кернигана и Ричи написано.
L_L>>Страницу, абзац, строку оригинала. А еще проще, раз уж так на С потянуло, стандарт C99 поглядеть
LVV>Поищу.
LVV>Но приведения для массива — это фикция, которую включили в стандарт для "полноты" картины. Так как массив нельзя передать по значению, то говорить здесь о приведении типов — несколько не понятно. Имя массива — это адрес его первого элемента, а адрес — это константа-указатель. О каких преобразованиях, пусть даже и прописанных в стандарте. здесь может идти речь? В компиляторе-то реально ничего не преобразовывается.
предлагаю помедитировать над следующим кодом
typedef int Arr[5];
void f(Arr& x);
int main()
{
int arr5[5];
int arr6[6];
f(arr5);
f(arr6);
};