Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
в фунцкию по-любому передается адрес переменной. Что ты сказал своей фразой - я не понял. Поясни плиз.
Отправлено
DASM
31 августа 2009, г. 13:00
В ответ на:
Думаю есть... В функцию параметр передается как переменная, а не как значение некого указателя. Не нужно будет дополнительных расходов по выделению временных переменных и арифметике с ними...
отправлено пользователем
ETM
31 августа 2009, г. 12:47
Составить ответ
|
Вернуться на конференцию.
Ответы
В С, который не ++, передаются не адреса переменных, а их значения. Адрес можно передать только как значение указателя.
-
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
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 38:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru