Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Ага. Глобальный массив, созданный внутри функции. Как ты это себе представляешь? А при чем тут статик? Я ж песал в первом посте: "нельзя локальный"
Отправлено
VasilyS
(80.92.96.25)
01 мая 2010, г. 15:22
В ответ на:
можно, если перед массивом написать static, или сделать его глобальным.
отправлено
доктор
01 мая 2010, г. 15:11
Составить ответ
|
Вернуться на конференцию
Ответы
было сказано, static внутри функции или глобальный
-
доктор
(01.05.2010, 15:24:18
95.27.165.56
, 116 байт)
Но это же не ЛОКАЛЬНАЯ, не автоматическая переменная. Это та же глобальная, доступ к которой ограничен функцией или файлом. У нее есть адрес (пучть в особом сегменте хранения). У локальной же переменной нет адреса.
-
VasilyS
(01.05.2010, 15:28:3
80.92.96.25
,
пустое
)
как это нет адреса ?
-
доктор
(01.05.2010, 15:32:10
95.27.165.56
, 247 байт)
Гы.... Попробуй. Массив создастся, силой или хитростью ты его возвратишь его адрес из функции. Но следующая же за вызовом fun() строка в main вызовет другую функцию fun2(), которая возьмёт и создаст на месте твого умершего массива свой. И испортит его нах.
-
VasilyS
(01.05.2010, 15:36:9
80.92.96.25
,
пустое
)
"Нет адреса" это: нельзя возвращать его адрес в вызывающую функцию.
-
VasilyS
(01.05.2010, 15:38:47
80.92.96.25
,
пустое
)
Чё примолк? Проверяешь правда ли, или быстренько исправляешь старые проекты? :-)
-
VasilyS
(01.05.2010, 15:51:28
80.92.96.25
,
пустое
)
много болтаешь )) ты попробуй на практике, что зря воду в ступе молоть ))
-
доктор
(01.05.2010, 15:55:35
95.27.165.56
, 244 байт)
Используй этот шанс, разрешаю. Не забывай о прерываниях только. Эх, Док! :-)
-
VasilyS
(01.05.2010, 15:59:7
80.92.96.25
,
пустое
)
ты мне ещё про динамическую память расскажи )))
-
доктор
(01.05.2010, 16:02:45
95.27.165.56
, 95 байт)
Не скажу. Я не про динамические, а про автоматические переменные говорю. Динамические особая статья.
-
VasilyS
(01.05.2010, 16:04:37
80.92.96.25
,
пустое
)
а я не про переменную, про память и физику контроллера ))
-
доктор
(01.05.2010, 16:09:16
95.27.165.56
,
пустое
)
А при работе с глобальными массивами на хера возвращать его адрес? :-)
-
VasilyS
(01.05.2010, 15:23:37
80.92.96.25
,
пустое
)
например
-
доктор
(01.05.2010, 15:27:33
95.27.165.56
, 371 байт)
Это глобальная переменная с ограниченной scope, у нее ЕСТЬ адрес. :-) У локальной - нет.
-
VasilyS
(01.05.2010, 15:30:27
80.92.96.25
,
пустое
)
Какэто нет?! Есть. Только после выхода из функции эта область памяти считается свободной и может выделиться кому-то ещё. Указатель указывает на поле, а там уже другие хозяйничают. (тогда получается, что static таки объявит "глобальную переменную" )
-
maik-vs
(01.05.2010, 15:58:2
94.233.226.32
,
пустое
)
Уже ответил Доку. Нет адреса для вызывающих функций. После выхода из функции, область ее лок. переменных утилизуется недетерминированно (+ прерывания).
-
VasilyS
(01.05.2010, 16:01:50
80.92.96.25
,
пустое
)
Так это называется "область видимости", scope. И фокус со static прокатит. Но не будет реентерабельности.
-
maik-vs
(01.05.2010, 16:05:9
94.233.226.32
,
пустое
)
Ну мыло мочало, начинай сначало ;-) Читай же с начала, Док с этого начал. А я про локальные, "невщзвращвбельные" гутарил..
-
VasilyS
(01.05.2010, 16:08:47
80.92.96.25
,
пустое
)
Да я всё читал и понял. Только нельзя так говорить "нет адреса".
-
maik-vs
(01.05.2010, 16:17:57
94.233.226.32
, 160 байт)
Ну, батенька можно и так говорить. Локальные переменные могут и на регистрах быть, а регистры (вот в Хмега тоже) не имеют явной адресации. А вообще компилятор предупредить должен.
-
VasilyS
(01.05.2010, 16:22:16
80.92.96.25
,
пустое
,
ссылка
)
вот и я об том же, адрес есть, вопрос в том, на что он указывает.
-
доктор
(01.05.2010, 16:21:32
95.27.165.56
,
пустое
)
Регистры у Хмега. Их много, там и локальный массивчик поместится, а.... какой у них адрес?.
-
VasilyS
(01.05.2010, 16:24:42
80.92.96.25
,
пустое
)
регистры это кэш там массивчики не живут ибо им нужен именно адрес ))
-
доктор
(01.05.2010, 16:44:53
95.27.165.56
, 127 байт)
Локальный массив ничем не отличается от локальных переменных и адрес его наверх передавать нельзя. Считай, что нет адреса и басто.
-
VasilyS
(01.05.2010, 16:58:22
80.92.96.25
,
пустое
)
глупость )) и локальные переменные тоже имеют адрес.
-
доктор
(01.05.2010, 17:02:51
95.27.165.56
,
пустое
)
Конечно имеют. Внутри функции его бери - не хочу. А как наверьх его затребуют - херак - и адреса нету :-)
-
VasilyS
(01.05.2010, 17:04:54
80.92.96.25
,
пустое
)
А вот локальные регистровые переменные - те даже своей соседке адрес не дадут. Кержаки наверно. Несмотря на то, что у AVR и 51 регистры имеют адрес.
-
VasilyS
(01.05.2010, 17:08:53
80.92.96.25
,
пустое
)
Нахлынуло: эх, сколько раз меня отсылали нафик на вопрос "девушка, адресочек свой дайте" :-)
-
VasilyS
(01.05.2010, 16:28:40
80.92.96.25
,
пустое
)
и вдруг она отвечает "адресочек динамически распределён другому ресурсу и временно исключён из области видимости" :))
-
maik-vs
(01.05.2010, 16:56:4
94.233.226.32
,
пустое
)
в микроконтроллерах со статической памятью ничего не утилизируется обычно
-
доктор
(01.05.2010, 16:04:30
95.27.165.56
, 88 байт)
:)) Сильно сказано. Следующая же функция со словесами "int index;" в её теле получит твой кусок памяти.
-
maik-vs
(01.05.2010, 16:10:54
94.233.226.32
,
пустое
)
а может и не получит )) это от компилятора зависит и множества других факторов ))
-
доктор
(01.05.2010, 16:13:26
95.27.165.56
,
пустое
)
думаю, пока полнолуние, не получит!
-
maik-vs
(01.05.2010, 16:18:46
94.233.226.32
,
пустое
)
Чево? Статическая? Имеешь в виду SRAM :-) Не утилизуется? Она, блин, по твоему, так и будет до выключения питания нюхать твой протухший локальный массив?
-
VasilyS
(01.05.2010, 16:07:26
80.92.96.25
,
пустое
)
ага так и будет, пока его кто то не затрёт )) вот такие дела ))
-
доктор
(01.05.2010, 16:10:23
95.27.165.56
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
что получится, если сложить 4 и 4 ?
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru