86. Ссылки (REFERENCE TO)

Поділитися
Вставка
  • Опубліковано 28 лис 2024

КОМЕНТАРІ • 17

  • @mutalexander
    @mutalexander Рік тому

    Спасибо! Отличное видео! Разобраны все моменты, с которыми пришлось ранее столкнуться при изучение ссылок и их отличия от указателей.

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      Спасибо за предложенную тему. =)

  • @nik01aich
    @nik01aich Рік тому +1

    спасибо за ссылку на статью про ссылки))

  • @zardosim7339
    @zardosim7339 Рік тому +1

    Указатели перешли из "C". Тяжело они до меня до ходили, т.к. весьма абстрактны. А вот в ассемблере они очень понятны, т.к. он прозрачен. За видио спасибо. Покурю).

  • @MikeTroitskiy
    @MikeTroitskiy Рік тому

    Давно эта тема интересовала, спасибо!

  • @Alexandr_Nazarov
    @Alexandr_Nazarov 4 місяці тому

    Про пример индексного доступа через указатель. В коде для CDS2.3, наверное, строку изменения адреса надо сделать второй. Иначе если массив в коде вызова индексируется с 0..(iElementArray -1), то элемент массива с индексом "0" будет пропущен, так как указатель при вызове функции будет указывать на первый элемент массива.

    • @Alexandr_Nazarov
      @Alexandr_Nazarov 4 місяці тому

      В CDS3.5, как выяснилось, обращение к массиву через Указатель происходит с начального индекса "0", независимо от диапазона индексов реального массива. Т.е если реальный массив имеет индексы 10..100, то значения индексов через Указатель должны быть 0..90. Из видео это не очевидно.

    • @CodesysOneLove
      @CodesysOneLove  4 місяці тому

      @@Alexandr_Nazarov спасибо за cправедливое замечание.

  • @СуНаиль
    @СуНаиль Рік тому +1

    Автор, было бы интересно рассмотреть работы со счетчиками через прерывания, работу энкодера так же. В Инете вообще нет видео по аппаратной теме прерывании по всяким событиям.

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      Я с вами полностью согласен - это было бы интересно. Но у наших ПЛК c CODESYS V3.5 "прерывания" (ExternalEvent в терминах CODESYS) пока что не поддержаны. Если в будущем мы поддержим такой функционал (я надеюсь, это произойдет - у нас довольно много запросов от клиентов на управление шаговыми двигателями, работу с энкодерами и т.д) - то я обязательно сделаю видео.

  • @Alexandr_Nazarov
    @Alexandr_Nazarov 8 місяців тому

    Честно говоря не понял (начало видео) почему указателю prDataArrya, который указывает на адрес первой и единственной переменной типа Real, а не на массив Real, и как к этому указателю применить индекс. Или на это надо смотреть с точки зрения предположения повторяемости однотипных переменных начиная с указателя на первый их элемент в случае применения индекса? prDataArrya: POINTER TO Aarray [1..100] of REAL? Поясните пожалуйста.

    • @CodesysOneLove
      @CodesysOneLove  8 місяців тому

      "На это надо смотреть с точки зрения предположения повторяемости однотипных переменных начиная с указателя на первый их элемент в случае применения индекса" - совершенно верно.

  • @ОлегПфлюг-к3ц
    @ОлегПфлюг-к3ц 3 місяці тому

    Здравствуйте. Допустим добавили в проект устройства модбас мастер, библиотека HCFA. Дали ему имя - master. Добавили слейф, имя slave. Далее канал имя ReadW. У него есть параметр с именем input и скорей всего структура размером в 9 слов (word) . Если правильно понимаю, выделяется ресурс, подключается исполнительный код вот это всего. Возможно ли получить ссылку на параметр input ?

    • @CodesysOneLove
      @CodesysOneLove  3 місяці тому +1

      Добрый день. Я не видел библиотеки, о которой вы говорите, так что затрудняюсь сходу ответить. Можете связаться со мной в понедельник по почте (e.kislov@owen.ru) и прислать ваш телеграм - можно пообщаться там по этому вопросу.

    • @ОлегПфлюг-к3ц
      @ОлегПфлюг-к3ц 3 місяці тому

      Разобрался. Это скорей всего входная значение функции что бы взять адрес переменной)). Скорей всего так))
      Решил пока вот так. Потому что контроллер с типом Union не захотел работать
      PROGRAM STIO //Получаем состояние входов выход
      VAR_INPUT
      WIO: input; //Из модбаса
      END_VAR
      VAR
      tt: POINTER TO IO; //Временная переменная
      IO:REFERENCE TO IO; //Переменные со входов выходов только чтение
      END_VAR
      tt := ADR( WIO); //Начальный адрес
      IO REF=tt^; //Разименовываем адресс и присваиваем этот адрес ссылке входов выход в структуре

  • @Evrosetyan1N
    @Evrosetyan1N 8 місяців тому

    Доброго времени суток! Верно ли (в плане быстродействия), что ссылками имеет смысл передавать переменные размером более 32(64) бит, а всё, что имеет меньший размер, быстрее передать через копирование?

    • @CodesysOneLove
      @CodesysOneLove  8 місяців тому

      Добрый день. Это хороший вопрос, но ответа у меня нет. Я могу только предположить, что для переменных размеров в 32/64 бита в плане быстродействия не будет фиксируемой пользователем разницы между передачей по значению и передачей по ссылке.