Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
оказывется в плюсах, окромя указателя есть такое понятие "ссылка". Нуегонах или стоящая весчь ?
Отправлено
MegaJohn
31 августа 2009, г. 11:19
Составить ответ
|
Вернуться на конференцию.
Ответы
Самое интересное - леводопустимость функции, возвращающей(+)
-
Quasy
(31.08.2009, 16:09:2
192.168.0.207,80.243.9.34
, 307 байт)
Это что же, fun(val) меняет val, а fun((val)) - нет? Какой интересный источник ошибок.
-
vmp
(31.08.2009, 16:12:25
10.0.1.100,87.245.155.198
,
пустое
)
Ответ:
-
Quasy
(31.08.2009, 16:22:37
192.168.0.207,80.243.9.34
, 522 байт)
Зачем такие сложности: (char&) от константной ссылки?
-
AD__
(31.08.2009, 17:20:58
84.47.191.243
, 57 байт)
Да вроде проще простого...
-
Quasy
(31.08.2009, 17:39:1
192.168.0.207,80.243.9.34
,
пустое
)
Это намек на то, что против лома нет приема
-
AD__
(31.08.2009, 17:48:55
84.47.191.243
, 72 байт)
Здесь строительство, а не слом. Нужен скальпель, а не Ваш ледоруб.
-
Quasy
(01.09.2009, 10:32:35
192.168.0.207,80.243.9.34
,
пустое
)
Лом-то как раз Ваше преобразование
-
AD__
(01.09.2009, 11:04:20
84.47.191.243
, 72 байт)
с теоретицкой точки зрения ссылка не объект, а инструкция компилеру. то есть в
-
yes
(31.08.2009, 14:37:13
89.175.180.246
, 273 байт)
то есть своего рода ссылка эквивалентна #define MY_ID base.people[0].id ?
-
MegaJohn
(31.08.2009, 15:17:49
81.222.85.88
,
пустое
)
Я их использую обычно для определения псевдонимов в функциях. Когда часто надо работать с чем-то вроде space.milky_way.solar_system.earth.russia.my_city.my_house.toilet.my_shit, то можно определить ссылку shit и код получается более читабельным: wash_down(my_shit)
-
Каа
(31.08.2009, 12:51:20
213.132.80.172
,
пустое
)
Для простоты: передача парамертра ф-ии по ссылке в С++ работает как var в параметрах ф-ии в PASCAL...
-
ETM
(31.08.2009, 12:28:52
94.79.44.2
,
пустое
)
(+)...
-
ETM
(31.08.2009, 12:36:8
94.79.44.2
, 191 байт)
:)
-
ETM
(31.08.2009, 12:37:17
94.79.44.2
, 191 байт)
мне интересно есть ли выигрыш по скорости
-
MegaJohn
(31.08.2009, 12:40:41
81.222.85.88
,
пустое
)
Думаю есть... В функцию параметр передается как переменная, а не как значение некого указателя. Не нужно будет дополнительных расходов по выделению временных переменных и арифметике с ними...
-
ETM
(31.08.2009, 12:47:5
94.79.44.2
,
пустое
)
в фунцкию по-любому передается адрес переменной. Что ты сказал своей фразой - я не понял. Поясни плиз.
-
DASM
(31.08.2009, 13:00:19
203.185.50.220
,
пустое
)
В С, который не ++, передаются не адреса переменных, а их значения. Адрес можно передать только как значение указателя.
-
ETM
(31.08.2009, 13:07:43
94.79.44.2
,
пустое
)
да, но при этом их и изменить невозможно - передаются копии
-
DASM
(31.08.2009, 13:13:8
203.185.50.220
,
пустое
)
Вот именно... Если хочешь в ф-ии изменить значение переменной и вернуть его, передавай эту переменную в функцию по ссылке, а не по значению. Или передай адрес этой переменной как значение указателя, и работай с ним в этой ф-ии как с указателем, а не как с переменной. Уфф...
-
ETM
(31.08.2009, 13:18:21
94.79.44.2
,
пустое
)
это все ясно. Я к тому, что код работы с указателем и ссылкой - идентичен
-
DASM
(31.08.2009, 13:20:16
203.185.50.220
,
пустое
)
За исключением отсутствии для ссылок арифметики указателей и невозможности им присваивания нового значения.
-
Oldring
(31.08.2009, 13:27:32
85.141.169.135
,
пустое
)
Это да. Я про те случаи, когда есть выбор между ними
-
DASM
(31.08.2009, 13:28:58
203.185.50.220
,
пустое
)
Ну и соответственно читаемость кода лучше, раз ссылка неизменяема.
-
Oldring
(31.08.2009, 13:33:30
85.141.169.135
,
пустое
)
да, но после Сей не всегда привычно
-
DASM
(31.08.2009, 13:34:48
203.185.50.220
,
пустое
)
Это исключительно дело привычки.
-
Oldring
(31.08.2009, 13:35:48
85.141.169.135
,
пустое
)
угу
-
DASM
(31.08.2009, 13:36:38
203.185.50.220
,
пустое
)
Нифига он не идентичен... Даже для программера ("x=1"; != "*x=1;")... Для компилятора - тем более... Ты же любитель листингов - запули. Потом, если не жалко, обнародуй... :)
-
ETM
(31.08.2009, 13:26:20
94.79.44.2
,
пустое
)
причем тут компилятор. Я про исполняемый код
-
DASM
(31.08.2009, 13:28:30
203.185.50.220
,
пустое
)
я дак думаю, что к примеру переменная может быть 8 бит, а адрес 16 бит, отседа и выигрыш
-
MegaJohn
(31.08.2009, 13:07:35
81.222.85.88
,
пустое
)
нет. Передается адрес по-любому
-
DASM
(31.08.2009, 13:12:32
203.185.50.220
,
пустое
)
хз, но ковырялся с передачей параметров к примеру для мемкопи, то тупо в некие регистры ложится адрес начала данных и ЗНАЧЕНИЕ ДЛИНЫ массива.
-
MegaJohn
(31.08.2009, 13:19:31
81.222.85.88
,
пустое
)
и чего тебе не нравится ???
-
DASM
(31.08.2009, 13:51:51
203.185.50.220
,
пустое
)
да всё нравится, всего лишь говорю что передается не указатель на то, где лежит длина, а само значение длины
-
MegaJohn
(31.08.2009, 14:07:57
81.222.85.88
,
пустое
)
ну это естественно - функция же не меняет его глобально, ей нужна только копия
-
DASM
(31.08.2009, 14:20:42
203.185.50.220
,
пустое
)
дык я про "Передается адрес по-любому"
-
MegaJohn
(31.08.2009, 14:23:11
81.222.85.88
,
пустое
)
О чем вообще тут можно спорить? Простые типы передаются по значению, если не написать явно ссылку. Структуры - по ссылке. Иногда особо умные компиляторы, вроде MSVC, передают небольшие структуры тоже по значению.
-
Oldring
(31.08.2009, 14:30:43
85.141.169.135
,
пустое
)
дык никто и не спорит, всего лишь до DASMа хочу донести, что "Передается адрес по-любому" это не есть аксиома
-
MegaJohn
(31.08.2009, 14:37:24
81.222.85.88
,
пустое
)
я про ссылки и указтели только ! Читай внимательней плиз
-
DASM
(31.08.2009, 14:52:19
203.185.50.220
,
пустое
)
... доп расходов для компилятора, конечно.
-
ETM
(31.08.2009, 12:49:20
94.79.44.2
,
пустое
)
ну так почитай, зачем они нужны. Я их не особо юзаю, хотя их использование несколько более безопасно - значение ссылки после присвоения не меняется.
-
DASM
(31.08.2009, 11:34:39
203.185.50.220
,
пустое
,
ссылка
)
ну дык как понял, что чисто косметический эффект.
-
MegaJohn
(31.08.2009, 11:50:54
81.222.85.88
,
пустое
)
не совсем - пергрузка некоторых операторов без них затруднена. А вообще общая рекомендация - "Use references when you can, and pointers when you have to.". Надо учиться. В конце концов С++ - это дисциплина, которую программист навязывает сам себе
-
DASM
(31.08.2009, 12:08:57
203.185.50.220
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 76:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru