![]() |
Модераторы: Daevaorn Страницы: (9) Все « Первая ... 3 4 [5] 6 7 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
да уж.....
это ты ничего не понял. То, что имя массива может использоваться в выражении как константный указатель не означает, что оно является переменной-указателем. тип long[] != long[5] != long * != long * const это разные типы |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Fazil6, тебе что, на иврите объяснять нужно, по-русски твая-мая не панимай, учи матчасть, не грузи.
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Fazil6, где отличия между первым и вторым?
А также принципиальные различия с четвертым? |
|||
|
||||
Fazil6 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
ну с первым вариантом я погорячился... посмотри что выдаст вот такой код
Это сообщение отредактировал(а) Fazil6 - 16.11.2006, 19:34 |
||||
|
|||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Не, нормально? Ты пытаешься присвоить указателю на инт АДРЕС указателя на инт? И что ты после этого хочешь??? mmm и nn уже сами по себе указатели. Добавлено @ 19:33 Fazil6, молодец, быстро отредактировал ![]() Тебе осталось еще убрать это же самое в выводе. |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
![]() int **ncm = &mmm; Добавлено @ 19:36 а в выводе тебе что не устраивает? |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
А вот это уже логично, что скомпилируется... Но что ты этим доказал? Добавлено @ 19:40 Да, я теперь понял, что ты хотел сказать... Но, все-таки, что ты этим доказал? из сказанного ранее? Несовместимость каких типов? Это сообщение отредактировал(а) JackYF - 16.11.2006, 19:38 |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
как раз не скомпиллируется ![]() |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Понятно, что long* и long* const - разные... а насчет остального что?
Добавлено @ 19:45
Мое сообщение относилось к пред. версии твоего поста ![]() ![]() Так несовместимость каких типов ты этим доказал? Кроме ( long* != long* const ) ? |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
я не говорил, что типы несовместимы. Эти типы приводятся друг другу (не во всех комбинациях конечно), но это разные типы. А то, что выводися cout показывает, что имя массива - это не int* |
|||
|
||||
JackYF |
|
||||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Конкретнее: чем отличаются long* const, int[] и int[5]?
Да. Это int* const... Потому что:
Выведет 4.
Я передал тип int[], не так ли? sizeof вернула уже 4, а не 20. sizeof( int[] ) вообще не сработает, так как int[] - incomplete type. При любом ИСПОЛЬЗОВАНИИ "типа" int[] комплилятор считает его int* const, и все дела... Отсюда отсуствие принципиальной разницы... |
||||||
|
|||||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
А что же это по=твоему, и что у тебя cout показывает ![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Fazil6 |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
нет. Все не так. я ведь в выводе использую массив и именно int* const, и выводит разное. Ведь и имя массива и указатель указывают на одно и тоже, но и sizeof и взятие адреса выдают разные результаты для одного и другого. Так почему вывод, что компиллятор считает эти вещи одним типом? Это разные типы. Теперь по поводу твоей функции my_func. Передать массив по значению нельзя. Всегда при передаче массива как параметр функции создается временная локальная переменная указатель (в данном случае int*) и инициализируется адресом первого элемента. Причем это не константный указатель. Поэтому у тебя и получается такой результат
здрасте! посмотри, что я попросил вывести и как выводится. Где там отсутствие разницы? Это сообщение отредактировал(а) Fazil6 - 16.11.2006, 20:20 |
||||||
|
|||||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
sizeof() - использование?
. Да, согласен. Неправ. Ну а то, что адреса указателей разные - так это, по-моему логично... Две переменные не могут иметь однинаковый адрес. Добавлено @ 20:46 Такого типа как ТИПА не существует. Его объявление и sizeof() - заморочки компилятора времени компиляции. Там, где он используется( не адрес берется и не sizeof(), а индексируется с целью получения элементов ), он ничем не отличается от int* const... Вот, по-моему, и все... |
|||
|
||||
Fazil6 |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
фокус не в этом, а в том, что
выведет одно и тоже, а
выведет значение указателя и адрес, переменной mmm Это к разговору о том, что имя массива это переменная, которая хранит адрес первого элемента. Если бы это была переменная, то можно было бы узнать ее адрес. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |