Перейти к содержанию
    

uk_denis

Участник
  • Постов

    15
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о uk_denis

  • Звание
    Участник
    Участник
  • День рождения 01.11.1978

Информация

  • Город
    Array

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. 1) Формально в правилах нет запрета отвечать на старые вопросы. Если вы его явно нашли в правилах, то буду рад увидеть. 2) Ответы на старые темы могут быть полезны не только создателю вопроса, но и другим людям которые будут искать в будущем ответы на подобные вопросы, что иногда помогало и мне в поиске.
  2. Не уверен, что точно понял Ваш вопрос. Если имеется ввиду D триггер с управлением по фронту, то Q = D, так как значение триггера меняется только по фронту синхросигнала. Подробнее можно почитать здесь: https://studfile.net/preview/7244618/page:2/
  3. Если еще актуально, то есть прекрасные уроки по STM32: http://mypractic.ru/urok-1-vvedenie-obshhie-svedeniya-skoree-vpechatleniya-ob-stm32.html
  4. Мне кажется, что стоит начать с азов электроники, в книге ниже основы радиоприема изложены. "Электроника шаг за шагом." Рудольф Сворень. https://www.computer-museum.ru/books/radio/mrb1248.pdf Подборка книг для введения в электронику: https://habr.com/ru/company/habr/blog/521172
  5. "Электроника шаг за шагом." Рудольф Сворень. https://www.computer-museum.ru/books/radio/mrb1248.pdf
  6. Dev-C++ https://sourceforge.net/projects/orwelldevcpp/ Turbo C++ for Windows https://developerinsider.co/download-turbo-c-for-windows-7-8-8-1-and-windows-10-32-64-bit-full-screen/ Небольшой обзор бесплатных компиляторов: https://isocpp.org/get-started
  7. С минимальными модификациями Ваш пример заработает, проверено в среде https://ideone.com val scan = java.util.Scanner(System.`in`) fun main(args: Array<String>) { var l1 = scan.nextInt() var l2 = scan.nextInt () println(l2.toString() + " " + l1.toString()) } Можно написать иначе: fun main() { val (a, b) = readLine()!!.split(' ') println(b + " " + a) }
  8. Возможно нижеследующая информация Вам поможет. Общие описания YModem: http://koapp.narod.ru/tehlit/hardware/18modems/9.htm http://pauillac.inria.fr/~doligez/zmodem/ymodem.txt https://programmer.ink/think/ymodem-protocol-learning.html Простая реализация Ymodem: https://gist.github.com/zonque/0ae2dc8cedbcdbd9b933
  9. MISRA-C 2004 Guidelines for the use of the C language in critical systems Rule 20.4 (required): Dynamic heap memory allcocation shall not be used.
  10. Массив находится в глобальной области памяти, так как он объявлен через static. Поэтому он размещается не на стеке функции.
  11. Это еще с чего бы? На какой архитектуре? При выделении объекта из кучи необходим вызов malloc, на который тратится время. При освобождении объекта из кучи надо вызвать free, на что тоже тратиться время. При работе с глобальным объектом во время выполнения программы (runtime) время не тратиться на инициализацию и освобождение памяти, так как объект размещен компилятор по заданному адресе линковщиком. Также возможна проблема фрагментации кучи. При работе с указателями возможен ряд ошибок, поэтому в частности в стандарте MISRA C не используются указатели и выделение памяти из кучи для безопасности, переносимости и надежности программ для встраиваемых систем.
  12. Если вынести объявление массива arr[10] из функции func() и сделать его глобальным, то sizeof(arr) вернёт уже размер массива arr, т.е. размер одного элемента массива * на количество элементов массива. Если массив arr[10] объявлен в функции func(), то sizeof(arr) вернёт размер указателя на элементов массива arr. Большие по размерам массивы не стоит объявлять внутри функции, так как локальные объекты хранятся на стеке, а размер стека не такой большой. Если надо объявить большой массив, то это будет глобальный объект или через динамическое выделение памяти в куче malloc для языка С. Работа с глобальными объектами требует меньше времени CPU, чем с объектами в куче, но нет такой гибкости как у объектов в куче. Это небольшое отступление от темы, так как рано или поздно Вы попробуете объявить большой массив на стеке. Пример @Arlleex вернул 10, а не 4? Проверил, тут я не прав. Вернул 10 так как sizeof применен к имени массива, хоть этот объект объявлен на стеке. Тут есть маленький нюанс, что надо передавать именно имя исходного массива в функцию sizeof. В случае передачи массива по указателю будет возвращен размер указателя. Есть примеры использования sizeof: https://www.geeksforgeeks.org/sizeof-operator-c/
  13. sizeof применен к локальному массиву на стеке. Это не глобальный объект. Локальные объекты функции не являются глобальными объектами.
  14. Формально вышеописанный код соответствует коду ниже, если рассматривается только программа целиком, так как есть цепочка вызовов: main() -> func() -> func2 (), где передается my_array void func1(void); void func2(void); #define SIZE_BUF 50 uint8_t my_array[SIZE_BUF]; void main(void) { func1(); } void func1(void) { memset(my_array, 0x00, sizeof(my_array)); func2(); } void func2(void) { memset(my_array, 0xFF, sizeof(my_array)); }
×
×
  • Создать...