-
- Банально, возврат более чем одного результата из функции. Скрипач(58 знак., 18.07.2012 22:24)
- Если количественно объём данных небольшой то, возможно, часто лучше возвращать структуру... - fk0(18.07.2012 23:53)
- Это необязательно для средних по размеру программ, можно глобальные переменные поменять напрямую. - Vladimir Ljaschko(18.07.2012 22:26)
- А что, есть вообще, в этом мире что-то, без чего нельзя обойтись? Нельзя заменить ничем другим? Не встречал. - Скрипач(18.07.2012 22:28)
- Если Вы чувствуете, что без чего-то можно обойтись, нужно без этого обходиться. Но общий настрой ветки противоположный. Скорее всего, - Лeoнид Ивaнoвич(18.07.2012 23:32, ссылка)
- Обойтись - значит пожертвовать. Об остальнов Вам в ЖЖ написал. - Скрипач(18.07.2012 23:57)
- А жертвовать разве плохо? - Лeoнид Ивaнoвич(18.07.2012 23:58)
- Дело не в действии, как таковом. Дело в адресате. - Скрипач(18.07.2012 23:59)
- Слишком сложно для меня. Не понимаю. - Лeoнид Ивaнoвич(19.07.2012 00:04)
- Не всякая жертва ведет к духовному росту. Скрипач(60 знак., 19.07.2012 00:08)
- Пля, зачем так сложно. Мы же тут об инструментах, типа перфоратора (компилятора). - _basile(19.07.2012 22:00)
- Мы не об инструменте. Мы о творце. - Скрипач(20.07.2012 20:05)
- Кто его знает. А так ли были нужны вещи, ушедшие в ту страну? Лишнее - вот главный враг человека. - Лeoнид Ивaнoвич(19.07.2012 00:15)
- Никто. Но я ставлю выше "принцип минимального действия". - Скрипач(19.07.2012 00:17 - 20.07.2012 20:06)
- Пля, зачем так сложно. Мы же тут об инструментах, типа перфоратора (компилятора). - _basile(19.07.2012 22:00)
- Не всякая жертва ведет к духовному росту. Скрипач(60 знак., 19.07.2012 00:08)
- Слишком сложно для меня. Не понимаю. - Лeoнид Ивaнoвич(19.07.2012 00:04)
- Дело не в действии, как таковом. Дело в адресате. - Скрипач(18.07.2012 23:59)
- А жертвовать разве плохо? - Лeoнид Ивaнoвич(18.07.2012 23:58)
- Обойтись - значит пожертвовать. Об остальнов Вам в ЖЖ написал. - Скрипач(18.07.2012 23:57)
- Вопрос о цене замены и потерях. - Vladimir Ljaschko(18.07.2012 22:36)
- Если Вы чувствуете, что без чего-то можно обойтись, нужно без этого обходиться. Но общий настрой ветки противоположный. Скорее всего, - Лeoнид Ивaнoвич(18.07.2012 23:32, ссылка)
- А что, есть вообще, в этом мире что-то, без чего нельзя обойтись? Нельзя заменить ничем другим? Не встречал. - Скрипач(18.07.2012 22:28)
- Например, я не представляю, как без геморроя средствами Си без указателей создавать списки. Возможно, структуры это не "обычные переменные"... - Vit(18.07.2012 22:20)
- Зачем списки в курятниках? Списки кур поименно? - Лeoнид Ивaнoвич(18.07.2012 23:21)
- Ну, например, количество датчиков для разных курятников даже на одной фабрике разное. Если опрос это отдельная
задачафункция, то она может опрашивать список подключенных датчиков и складывать полученные значения в соответствующие поля того Vit(110 знак., 18.07.2012 23:34)- Функция получает номер датчика, сохраняет значение в массиве с таким же индексом. Явно указатели не используются. - Лeoнид Ивaнoвич(18.07.2012 23:36)
- А как вы в программе размер массива зададите, если заранее неизвестно количество используемых датчиков? Размер сразу на все возможное количество, насколько ОЗУ хватит? - rezident(18.07.2012 23:42)
- В реальных устройствах такого не бывает, что неизвестно количество датчиков. Тот, кто рисовал схему и плату, количество знает точно. Если какие-то датчики могут быть не подключены - ничего, массив выделяем всегда для всех. Устройство ведь должно Лeoнид Ивaнoвич(42 знак., 18.07.2012 23:52)
- Бывает. Бывает, что несколько разных типов датчиков со своим типом опроса (аналоговые, различные цифровые, задаваемые с "верхнего уровня"), приложению назначается откуда брать значения (например клавиатурным вводом назначается), а к тому же с Vit(103 знак., 18.07.2012 23:59)
- А если количество датчиков потребует памяти больше, чем физически есть в контроллере??? Всё это бред собачий! Под такие вещи надо выделять массив структур и заполнять его при работе программы. Размер массива - максимальное количество FDA(236 знак., 19.07.2012 08:34)
- Например, 2 канала связи. Одних датчиков (на одном канале связи) может быть больше, других (на другом канале связи) меньше в зависимости от оперативно вводимой конфигурации. На каждый канал своя опрашивалка - ей не нужно сообщать свойствами из Vit(634 знак., 19.07.2012 08:55)
- А не проще в одном H-файле задать ВСЕ необходимые для программы константы? И в зависимости от них уже выделять память под массивы. В любом случае программа должно знать сколько она может поддерживать датчиков и адекватно реагировать если их FDA(42 знак., 19.07.2012 09:58)
- Если конфигурировать на ходу, то не проще. А планировать надо не в сферовакуумных константах, а в пределах реально доступных ресурсов. Особенно если пишет не один человек. Vit(409 знак., 19.07.2012 10:08)
- Использование динамических структур чаще оправдано в других случаях, например, при реализации сложного меню в интерфейсе. Здесь они реально обеспечивают удобство при описании дерева, хотя опять же Вы должны знать максимальное кол-во таких FDA(406 знак., 19.07.2012 10:02)
- Повторяю - НЕ НУЖНО знать максимальное кол-во таких элементов - в этом существенная разница, а стОит обслуживание списков очень недорого, да и компиляторы хорошо оптимизируют соответствующие конструкции. Вы не стесняйтесь - попробуйте:) И Vit(104 знак., 19.07.2012 10:13)
- Ладно, это тупой спор. Вы уходите о того, с чего начали. - FDA(19.07.2012 10:19)
- это Вы сказали, что использовать списки - бред собачий. при этом оказалось, что аргументация Ваша НИКАКАЯ и о списках Вы только слышали. - Vit(19.07.2012 10:23)
- Я нормально изложил свою позицию, советую перечитать вышесказанное ещё раз. - FDA(19.07.2012 10:28)
- Ответьте, пожалуйста, на один вопрос: как задать размер списка? - Vit(19.07.2012 10:53)
- Я нормально изложил свою позицию, советую перечитать вышесказанное ещё раз. - FDA(19.07.2012 10:28)
- это Вы сказали, что использовать списки - бред собачий. при этом оказалось, что аргументация Ваша НИКАКАЯ и о списках Вы только слышали. - Vit(19.07.2012 10:23)
- Ладно, это тупой спор. Вы уходите о того, с чего начали. - FDA(19.07.2012 10:19)
- Повторяю - НЕ НУЖНО знать максимальное кол-во таких элементов - в этом существенная разница, а стОит обслуживание списков очень недорого, да и компиляторы хорошо оптимизируют соответствующие конструкции. Вы не стесняйтесь - попробуйте:) И Vit(104 знак., 19.07.2012 10:13)
- А не проще в одном H-файле задать ВСЕ необходимые для программы константы? И в зависимости от них уже выделять память под массивы. В любом случае программа должно знать сколько она может поддерживать датчиков и адекватно реагировать если их FDA(42 знак., 19.07.2012 09:58)
- Например, 2 канала связи. Одних датчиков (на одном канале связи) может быть больше, других (на другом канале связи) меньше в зависимости от оперативно вводимой конфигурации. На каждый канал своя опрашивалка - ей не нужно сообщать свойствами из Vit(634 знак., 19.07.2012 08:55)
- Не сталкивался с таким никогда, поэтому мне трудно говорить на эту тему. И не верю в реальность такого. Я бы написал отдельную прошивку. - Лeoнид Ивaнoвич(19.07.2012 00:01)
- У меня такие девайсы сплошь и рядом - Vit(19.07.2012 00:07)
- Трудно найти общий язык тому, кто делает курятники, с тем, кто делает космические корабли. - Лeoнид Ивaнoвич(19.07.2012 00:10)
- При чём тут корабли? Я в своё время чуток коровники автоматизировал - ну и что тут такого? - Vit(19.07.2012 00:19)
- Вот и я автоматизировал. И коровники, и элеваторы. И всё без указателей. - Лeoнид Ивaнoвич(19.07.2012 00:28)
- Что тут сказать - герой - Vit(19.07.2012 00:31)
- надо говорить "Да гений, гений." ;> - Snaky(19.07.2012 02:25)
- Что тут сказать - герой - Vit(19.07.2012 00:31)
- Вот и я автоматизировал. И коровники, и элеваторы. И всё без указателей. - Лeoнид Ивaнoвич(19.07.2012 00:28)
- Вывод: надо делать космические курятники :)) - MBedder(19.07.2012 00:13)
- При чём тут корабли? Я в своё время чуток коровники автоматизировал - ну и что тут такого? - Vit(19.07.2012 00:19)
- Трудно найти общий язык тому, кто делает курятники, с тем, кто делает космические корабли. - Лeoнид Ивaнoвич(19.07.2012 00:10)
- У меня такие девайсы сплошь и рядом - Vit(19.07.2012 00:07)
- А если количество датчиков потребует памяти больше, чем физически есть в контроллере??? Всё это бред собачий! Под такие вещи надо выделять массив структур и заполнять его при работе программы. Размер массива - максимальное количество FDA(236 знак., 19.07.2012 08:34)
- Бывает. Бывает, что несколько разных типов датчиков со своим типом опроса (аналоговые, различные цифровые, задаваемые с "верхнего уровня"), приложению назначается откуда брать значения (например клавиатурным вводом назначается), а к тому же с Vit(103 знак., 18.07.2012 23:59)
- В реальных устройствах такого не бывает, что неизвестно количество датчиков. Тот, кто рисовал схему и плату, количество знает точно. Если какие-то датчики могут быть не подключены - ничего, массив выделяем всегда для всех. Устройство ведь должно Лeoнид Ивaнoвич(42 знак., 18.07.2012 23:52)
- Это использование глобальных переменных, ну и, опять же, явное задание количества датчиков. Никто не запрещает, но модульный подход против:) - Vit(18.07.2012 23:42)
- Глобальные они только внутри небольшого модуля. А что такое "неизвестное количество датчиков", я так и не понял. У нас же конкретная печатная плата. - Лeoнид Ивaнoвич(18.07.2012 23:54)
- У Вас для каждой платы своя программа? У меня нет. Я ленивый пишу одну прогу для всех плат. Поэтому и кол-во датчиков не ограничиваю. Alloc рулит и уже давно(на пиках с 2005г). - abivan(19.07.2012 11:21 - 11:26)
- У Вас, насколько помнится, используется MicroLAN - датчики вне платы - Vit(19.07.2012 00:01)
- Да, но никогда не используется их адресация. Каждый датчик тянется отдельным проводом. - Лeoнид Ивaнoвич(19.07.2012 00:02)
- И это правильно, ибо так надежнее всего - от вылета одного датчика обмен с соседями не пострадает - MBedder(19.07.2012 00:05)
- Да, но никогда не используется их адресация. Каждый датчик тянется отдельным проводом. - Лeoнид Ивaнoвич(19.07.2012 00:02)
- Глобальные они только внутри небольшого модуля. А что такое "неизвестное количество датчиков", я так и не понял. У нас же конкретная печатная плата. - Лeoнид Ивaнoвич(18.07.2012 23:54)
- А как вы в программе размер массива зададите, если заранее неизвестно количество используемых датчиков? Размер сразу на все возможное количество, насколько ОЗУ хватит? - rezident(18.07.2012 23:42)
- Функция получает номер датчика, сохраняет значение в массиве с таким же индексом. Явно указатели не используются. - Лeoнид Ивaнoвич(18.07.2012 23:36)
- Ну, например, количество датчиков для разных курятников даже на одной фабрике разное. Если опрос это отдельная
- Угу. Нужно спросить у Л.И., использует ли он структуры. - Vladimir Ljaschko(18.07.2012 22:24)
- Да, структуры использую. Но доступ делаю через ".", а не "->". - Лeoнид Ивaнoвич(18.07.2012 23:22)
- Хмм - Тогда здесь и всплывает полезное качество указателей - использование для для адресации к регистрам, битовым полям и т.д. - Make_Pic(19.07.2012 02:10)
- Не посмотрел - ниже Гудвин в ту же "точку" пишет - Make_Pic(19.07.2012 02:12)
- М-м... Есть буфер. Принимаются/передаются пакеты с самыми разношерстными структуированными данными. Интерпретируются, например, по содержимому первого байта(тип пакета/структуры). Что в тиньке, что в ПЦ доступ к полям без присваивания адреса Гудвин(91 знак., 19.07.2012 01:03)
- только при "->" однозначно будет подставлено константное значение смещения, а при "." как компилер захатит/смагёт - может и в рантайме начать считать - Vit(18.07.2012 23:48 - 23:50)
- Для гнуси выше сказанное аксиома, для других компиляторов не факт - Make_Pic(19.07.2012 02:16)
- Хм, а где это описано? - MBedder(18.07.2012 23:59)
- поищу первоисточник - маякну. по факту было так. например, один и тот же код для AVR IAR 5.40 в этом деле заметно уделывает 5.20 - Vit(19.07.2012 00:05)
- Небось просто крякнутая оптимизация загнулась :)) - MBedder(19.07.2012 00:06)
- уговаривать не буду. если не найду, то можешь считать, что я прогнал (профит мне останется:) - Vit(19.07.2012 00:10)
- Небось просто крякнутая оптимизация загнулась :)) - MBedder(19.07.2012 00:06)
- поищу первоисточник - маякну. по факту было так. например, один и тот же код для AVR IAR 5.40 в этом деле заметно уделывает 5.20 - Vit(19.07.2012 00:05)
- +100500 - патамушта на один клавотык меньше :)) - MBedder(18.07.2012 23:45)
- Это патамушта вы современные IDE не используете. В Visual Studio количество клавотыков для "." и "->" одинаковое (1 штука). - Apтём(19.07.2012 00:17)
- Да я тебе в любой самой сраной IDE сколько угодно наваяю макрокнопок - толку то - MBedder(19.07.2012 00:22)
- Это патамушта вы современные IDE не используете. В Visual Studio количество клавотыков для "." и "->" одинаковое (1 штука). - Apтём(19.07.2012 00:17)
- Для такого способа доступа нужно знать имя структуры. - rezident(18.07.2012 23:43)
- Я сам даю имена всем структурам, массивам, переменным. Соответственно, я их знаю. Или Вы про программирование в состоянии сильного алкогольного опъянения? - Лeoнид Ивaнoвич(18.07.2012 23:47)
- А что, разве можно что-либо писать на С на трезвую голову? :)) - MBedder(18.07.2012 23:56)
- Если она typedef'нутая - то необязательно - MBedder(18.07.2012 23:46)
- Я сам даю имена всем структурам, массивам, переменным. Соответственно, я их знаю. Или Вы про программирование в состоянии сильного алкогольного опъянения? - Лeoнид Ивaнoвич(18.07.2012 23:47)
- Хмм - Тогда здесь и всплывает полезное качество указателей - использование для для адресации к регистрам, битовым полям и т.д. - Make_Pic(19.07.2012 02:10)
- Да, структуры использую. Но доступ делаю через ".", а не "->". - Лeoнид Ивaнoвич(18.07.2012 23:22)
- Зачем списки в курятниках? Списки кур поименно? - Лeoнид Ивaнoвич(18.07.2012 23:21)
- Указатель нужен для того, чтобы можно было указывать на объект, не зная его имени или даже типа. rezident(390 знак., 18.07.2012 22:09)
- Это ООП, пока просто про Си. - Лeoнид Ивaнoвич(18.07.2012 23:23)
- Это простой Си - ANSI C, pure C, C89. - rezident(18.07.2012 23:30)
- В Си нет понятия "объект". - Лeoнид Ивaнoвич(18.07.2012 23:38)
- Как это? "Переменные и константы являются основными объектами, с которыми оперирует программа". Керниган, Ричи, Библия.Или не по-нашему:"Variables and constants are the basic data objects manipulated in a program" - Юра(19.07.2012 08:46, )
- "Переменная - это такой "ящичек" с именем, в котором может храниться некое значение..." (C) fk0(226 знак., 19.07.2012 09:00 - 09:04)
- Зато в русском языке есть :-P - rezident(18.07.2012 23:46)
- Как это? "Переменные и константы являются основными объектами, с которыми оперирует программа". Керниган, Ричи, Библия.Или не по-нашему:"Variables and constants are the basic data objects manipulated in a program" - Юра(19.07.2012 08:46, )
- В Си нет понятия "объект". - Лeoнид Ивaнoвич(18.07.2012 23:38)
- Это простой Си - ANSI C, pure C, C89. - rezident(18.07.2012 23:30)
- Это понятие всегда можно привести к адресу памяти, не называя это указателем на байт. - Vladimir Ljaschko(18.07.2012 22:16)
- Третий, вдоль барной стойки (индекс массива :) - Скрипач(18.07.2012 22:11 - 22:15)
- Не катит. Массив это структура из одинаковых (однотипных) элементов. - rezident(18.07.2012 22:14)
- Запись struct вполне может быть элементом массива. - Скрипач(18.07.2012 22:16)
- Структура может состоять из элементов разного типа, в т.ч. из других структур. Но для доступа к структуре нужно иметь ее описание (определение). Для доступа к массиву достаточно знать тип одного его элемента. То бишь rezident(115 знак., 18.07.2012 22:29 - 22:35)
- Ну и складывайте в массив однотипные структуры. Работайте с индексами массивов. Что не так? - Скрипач(18.07.2012 22:35)
- Ну получите вы адрес структуры из этого массива структур и что дальше? Для доступа к элементу массиву нужно знать имя массива или его адрес, а также тип и индекс элемента. Для доступа к элементу структуры нужно знать ее имя или адрес и rezident(99 знак., 18.07.2012 22:43)
- Чуть неудобнее - кроме типа, нужно декларировать внешний массив структур. Всего то. - Vladimir Ljaschko(18.07.2012 22:47)
- Да. И что? - Скрипач(18.07.2012 22:45)
- А то, что к перемещаемому или динамически создаваемому объекту нельзя обеспечить доступ по его имени, а только через указатель по его адресу. - rezident(18.07.2012 22:53)
- В других яву прекрасно обеспечивается доступ по-имени... Например в Tcl. - fk0(19.07.2012 10:53)
- Ну нет у автора динамически создаваемых объектов. - Vladimir Ljaschko(19.07.2012 09:59)
- А то, что к перемещаемому или динамически создаваемому объекту нельзя обеспечить доступ по его имени, а только через указатель по его адресу. - rezident(18.07.2012 22:53)
- Ну получите вы адрес структуры из этого массива структур и что дальше? Для доступа к элементу массиву нужно знать имя массива или его адрес, а также тип и индекс элемента. Для доступа к элементу структуры нужно знать ее имя или адрес и rezident(99 знак., 18.07.2012 22:43)
- Ну и складывайте в массив однотипные структуры. Работайте с индексами массивов. Что не так? - Скрипач(18.07.2012 22:35)
- Структура может состоять из элементов разного типа, в т.ч. из других структур. Но для доступа к структуре нужно иметь ее описание (определение). Для доступа к массиву достаточно знать тип одного его элемента. То бишь rezident(115 знак., 18.07.2012 22:29 - 22:35)
- Запись struct вполне может быть элементом массива. - Скрипач(18.07.2012 22:16)
- Не катит. Массив это структура из одинаковых (однотипных) элементов. - rezident(18.07.2012 22:14)
- Это ООП, пока просто про Си. - Лeoнид Ивaнoвич(18.07.2012 23:23)
- Легко. Скрипач(154 знак., 18.07.2012 21:59)
- Я сам использую указатели в этом случае :), но можно сложить объекты в массив и передавать в функцию индекс. - Vladimir Ljaschko(18.07.2012 22:01)
- Индекс? Это если массив однотипных объектов. А если (к примеру) нужно читать-записывать например данные(настройки) из eeprom, то что передать функциям чтения-записи? Данные разные по длине и адресам. Если использовать указатели то функция такая: Apтём(136 знак., 18.07.2012 22:09)
- Совершенно не понимаю проблемы. Любые данные имеют определенный тип. Данные каждого типа сложили в свой массив, для доступа используем индекс. Что не так, зачем указатели? - Лeoнид Ивaнoвич(18.07.2012 23:44)
- Экземляр данных может быть в единственном количестве. Его тоже как массив определять? Apтём(202 знак., 19.07.2012 00:22)
- Ничего не понял. - Лeoнид Ивaнoвич(19.07.2012 00:26)
- Индекс и есть примитивный указатель. Захочешь и индексы в массив сложить - будет указатель на указатель, и так до полного удовлетворения :)) - MBedder(19.07.2012 00:04)
- Но с индексами как приятно работать - всё понятно! - Лeoнид Ивaнoвич(19.07.2012 00:04)
- И приятно, и понятно.... только Bill(600 знак., 19.07.2012 00:23)
- Я за то, чтобы пожертвовать эффективностью во имя простоты. А Вы? - Лeoнид Ивaнoвич(19.07.2012 00:25)
- Когда как. Использование и указателей, и индексов не является самоцелью. Хотя, Bill(186 знак., 19.07.2012 00:33)
- Верно, надо знать. Но если мозг слаб, тогда выход один - упрощение. - Лeoнид Ивaнoвич(19.07.2012 00:36)
- Тогда предложите ПРОСТОЙ способ вернуть из функции более одного значения. - Скрипач(19.07.2012 00:29)
- Возвращать структуру, например. - fk0(19.07.2012 09:07)
- А разве в Си можно возвращать из функции структуру (не указатель на нее)? - Скрипач(19.07.2012 10:13)
- А функцией div() возвращающей div_t что, никогда не приходилось пользоваться? fk0(104 знак., 19.07.2012 10:55)
- Можно. - Bill(19.07.2012 10:26)
- А разве в Си можно возвращать из функции структуру (не указатель на нее)? - Скрипач(19.07.2012 10:13)
- Почитайте книги по основам программирования - возврат нескольких значений из функции есть ЗЛО! Функции с количеством параметров более трёх - ЗЛО! Код с такими функциями становится крайне тяжело читаем и последующая доработка его становится очень FDA(131 знак., 19.07.2012 08:42)
- Да просто в поделке бородачей нет ни адекватных типов данных (например списков), которые можно было возвращать естесственным образом из функции, нет именованных аргументов функций, ни значений по-умолчанию, да много чего. Отсюда и. И не позволяет fk0(165 знак., 19.07.2012 09:13)
- Из своего опыта работы с чистым Си скажу, что указатели реально незаменимы только при работе со структурами (struсt). По другому их никак не изменить из функции. Но здесь всё довольно лаконично описывается и, кстати, -> в тему. В C++ добавилась FDA(453 знак., 19.07.2012 10:10)
- Ну почему же? В Си можно Bill(115 знак., 19.07.2012 11:15)
- Указатели в явном виде нужны тогда, когда нужны манипуляции над их значением (адресом). Что-то вроде ссылок, конечно нужно. Ещё в поделках бородачей не хватает with. И вложенных функций. Я фигею, конечно. 20 лет назад всё это было в fk0(85 знак., 19.07.2012 11:01)
- Да, вложенных функций реально не хватает. Но тут религия не позволяет, возможно, добавить это в новый стандарт Си. Так же как и добавить операции ++, --, +=, *= и пр. в язык Паскаль (Delphi). - FDA(19.07.2012 11:14)
- А какая польза от вложенных функций, если их так не хватает? - Bill(19.07.2012 11:17)
- Вложенная функция видит переменные функции в которую она вложена. А в C сейчас, если нужна функция, приходится нужные переменные или так передавать огромной кучей и ещё по-указателям (если они модифицируются), или заворачивать в структуру и fk0(112 знак., 19.07.2012 11:32)
- static. Ведь прекрасно знаешь сам abivan(159 знак., 19.07.2012 12:11)
- static - это не то. Они память не там отъедают, и отъедают навсегда. А идея в "динамическом" распределении на стеке. - AlexBi(19.07.2012 13:04)
- Ну впринципе, если не нужно быть thread safe, то можно и static... правда своя есть. - fk0(19.07.2012 14:03)
- static - это не то. Они память не там отъедают, и отъедают навсегда. А идея в "динамическом" распределении на стеке. - AlexBi(19.07.2012 13:04)
- Все дело в том, что программа на Паскале Bill(301 знак., 19.07.2012 11:55)
- static. Ведь прекрасно знаешь сам abivan(159 знак., 19.07.2012 12:11)
- Вложенная функция видит переменные функции в которую она вложена. А в C сейчас, если нужна функция, приходится нужные переменные или так передавать огромной кучей и ещё по-указателям (если они модифицируются), или заворачивать в структуру и fk0(112 знак., 19.07.2012 11:32)
- А какая польза от вложенных функций, если их так не хватает? - Bill(19.07.2012 11:17)
- Да, вложенных функций реально не хватает. Но тут религия не позволяет, возможно, добавить это в новый стандарт Си. Так же как и добавить операции ++, --, +=, *= и пр. в язык Паскаль (Delphi). - FDA(19.07.2012 11:14)
- Из своего опыта работы с чистым Си скажу, что указатели реально незаменимы только при работе со структурами (struсt). По другому их никак не изменить из функции. Но здесь всё довольно лаконично описывается и, кстати, -> в тему. В C++ добавилась FDA(453 знак., 19.07.2012 10:10)
- :) - Vit(19.07.2012 08:57, ссылка)
- Да просто в поделке бородачей нет ни адекватных типов данных (например списков), которые можно было возвращать естесственным образом из функции, нет именованных аргументов функций, ни значений по-умолчанию, да много чего. Отсюда и. И не позволяет fk0(165 знак., 19.07.2012 09:13)
- Было выше. Глобальные переменные внутри модуля. - Лeoнид Ивaнoвич(19.07.2012 00:30)
- Еще - структура. - Лeoнид Ивaнoвич(19.07.2012 00:31)
- Но чаще я тупо пишу две, три функции. Оверхед, зато понятно. Лeoнид Ивaнoвич(107 знак., 19.07.2012 00:32)
- Указатель на функцию тоже полезная штука. В обработчиках меню. - Скрипач(19.07.2012 00:46)
- Не проще ли такое через виртуальные функции класса делать? - Apтём(19.07.2012 01:09)
- стоп, речь про С - Make_Pic(19.07.2012 02:29)
- А, точно... Но к чему такое ограничение? - Apтём(19.07.2012 02:38)
- Ни к чему. В нормальных ЯВУ есть eval. В C++ нет. - fk0(19.07.2012 07:57)
- А, точно... Но к чему такое ограничение? - Apтём(19.07.2012 02:38)
- стоп, речь про С - Make_Pic(19.07.2012 02:29)
- А я меню кручу через switch. - Лeoнид Ивaнoвич(19.07.2012 00:48)
- И это не производит впечатления благородного аскетизма. Скорее второе. - Скрипач(19.07.2012 01:02)
- Закат солнца вручную. - Apтём(19.07.2012 01:10)
- И это не производит впечатления благородного аскетизма. Скорее второе. - Скрипач(19.07.2012 01:02)
- Не проще ли такое через виртуальные функции класса делать? - Apтём(19.07.2012 01:09)
- Указатель на функцию тоже полезная штука. В обработчиках меню. - Скрипач(19.07.2012 00:46)
- Но чаще я тупо пишу две, три функции. Оверхед, зато понятно. Лeoнид Ивaнoвич(107 знак., 19.07.2012 00:32)
- Еще - структура. - Лeoнид Ивaнoвич(19.07.2012 00:31)
- Возвращать структуру, например. - fk0(19.07.2012 09:07)
- Когда как. Использование и указателей, и индексов не является самоцелью. Хотя, Bill(186 знак., 19.07.2012 00:33)
- Я за то, чтобы пожертвовать эффективностью во имя простоты. А Вы? - Лeoнид Ивaнoвич(19.07.2012 00:25)
- Прибавь к индексу адрес начала массива в правильной размерности - получится полноценный указатель :)) - MBedder(19.07.2012 00:15)
- Не, спасибо, лучше останусь с индексом :))) - Лeoнид Ивaнoвич(19.07.2012 00:24)
- И приятно, и понятно.... только Bill(600 знак., 19.07.2012 00:23)
- Но с индексами как приятно работать - всё понятно! - Лeoнид Ивaнoвич(19.07.2012 00:04)
- Экземляр данных может быть в единственном количестве. Его тоже как массив определять? Apтём(202 знак., 19.07.2012 00:22)
- Совершенно не понимаю проблемы. Любые данные имеют определенный тип. Данные каждого типа сложили в свой массив, для доступа используем индекс. Что не так, зачем указатели? - Лeoнид Ивaнoвич(18.07.2012 23:44)
- А можно и не складывать. Скрипач(58 знак., 18.07.2012 22:07)
- Массив структур. - Лeoнид Ивaнoвич(18.07.2012 23:45)
- Индекс? Это если массив однотипных объектов. А если (к примеру) нужно читать-записывать например данные(настройки) из eeprom, то что передать функциям чтения-записи? Данные разные по длине и адресам. Если использовать указатели то функция такая: Apтём(136 знак., 18.07.2012 22:09)
- Я сам использую указатели в этом случае :), но можно сложить объекты в массив и передавать в функцию индекс. - Vladimir Ljaschko(18.07.2012 22:01)
- Банально, возврат более чем одного результата из функции. Скрипач(58 знак., 18.07.2012 22:24)