![]() |
|
Модераторы: bsa |
![]()
|
|
| greengarlic |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 16.4.2010 Репутация: нет Всего: нет |
Всем привет,
есть какая то принципиальная разница между вот такими объявлениями:
а то в разных примерах поразному пишут. |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
Нет разницы.
//int *i - удобнее :) -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
разница в понимании кто есть указатель.
А в правильном понимании это int *i; ибо указателем является i на тип int -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| greengarlic |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 16.4.2010 Репутация: нет Всего: нет |
djamshud,
Dem_max, Спасибо за ответы! |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Мне удобнее так: тип данных, пробел, идентификатор. Я воспринимаю указатель как отдельный тип данных, поэтому всегда пишу:
Это сообщение отредактировал(а) kemiisto - 7.6.2010, 19:58 -------------------- |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
Указатель - это не тип данных.
как бы намекают. То есть формально его называют типом данных, но по сути это нечто обособленное. Это сообщение отредактировал(а) djamshud - 7.6.2010, 20:08 -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
djamshud, я каждую переменную на новой строке объявляю. Никаких проблем.
-------------------- |
|||
|
||||
| NightmareZ |
|
||||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: 0 Всего: 13 |
В языках С и C++ звёздочка будет относиться только к первой переменной:
Поэтому, я считаю, правильнее писать звёздочку слитно с именем переменной (хотя синтаксически разницы никакой). В C# же звёздочка будет относиться к типу:
Поэтому тут, я считаю, правильнее писать звёздочку слитно с именем типа (хотя, опять-таки, синтаксически разницы нет). -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
||||
|
|||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
У меня лично привычка если после типа одна переменная, пишу
int* n; Если больше, то int *n, m, *p; |
|||
|
||||
| Dem_max |
|
||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
NightmareZ, кстати подметил, я думал на этом акцентировать внимание. Многие новички ошибаются когда пишут так:
int* i, j, k; в итоге они думают что j,k - это указатель, хотя указателем является лишь i. Некоторые индивиды пишут наверное так:
Правда не красиво ? чем так:
Еще одно заблуждение считать указатель типом данных. Хотя бы потому что указатель это указатель и это адресация на участок памяти, правда если память выделена и указателю присвоен адрес на участок памяти. Что такое память это массив байт. Собственно указатель указывает на массив байт и не на что иное, собственно строка int* i; говорит компилятору что есть указатель на массив байт в памяти, но этот массив нужно интерпретировать как тип int и работать с данными как с типом int. Собственно почему указатель не может быть отдельным типом данных, ды кпотому что массив байт можно привести к разным типам (!!! все но не во все, это отдельная тема). Собственно пример:
Теперь massiv указывает на область памяти из 200 байт. И компилятор работает с типом BYTE (unsigned char), легким движением руки мы может трактовать эту область памяти как тип int
Собственно вопрос чему равен mas[0] и mas[1] ? (загадка для заблуждающихся и новичков) Если ответите то собственно поймете почему ниже следующее высказывание, глупо.
Это сообщение отредактировал(а) Dem_max - 8.6.2010, 05:33 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
||||||||||||
|
|||||||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
Это данные "тирэ" адрес. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
Dem_max, мощно, но ни о чем. Зачем вы истолкли воду в ступе? Указатель - это тоже тип, правила и смысл кастования у них другой, но все равно формально это тип.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Что ты говоришь? Открываем стандарт (я взял для примера мартовский черновик 0x), переходим к пункту 8.3.1 и читаем:
Вы же так любите стандарты... -------------------- |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |