Re[6]: Инициализация указателя на массив
От: jazzer Россия Skype: enerjazzer
Дата: 23.03.04 09:23
Оценка:
Здравствуйте, 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);
};
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.