• Как повернуть асинхронный двигатель на определённый угол?

    Асинхронные двигатели не предназначены для поворота на определенный угол, скорость вращения их ротора может не соответствовать скорости вращения магнитного поля статора. Поэтому способ только один - считывание положения вала с помощью датчика и управление двигателем по этому датчику. В этом логика управления асинхронным двигателем не отличается от коллекторного, применяемого в модельных сервоприводах.
    Ответ написан
    Комментировать
  • Как правильно привести тип void* к int?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Размер void стандартом не определён, поэтому поведение операций инкремента/декремента и индекса для указателя типа void* также не определено и зависит от компилятора.
    В вашем случае компилятор принял размер void за 1 байт, поэтому v[i] работает с шагом в 1 байт.
    ints[i] работает с шагом sizeof(int) байт, то есть 2, 4 или 8 байт, в зависимости от компилятора и целевой системы.
    Некоторые компиляторы просто выдадут ошибку при таком использовании указателя с типом void*.
    Ответ написан
    Комментировать
  • Как изменить символьное значение структуры?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Указатель на статически определённый массив нельзя изменить.
    Вы можете либо определить массив динамически и самостоятельно выделять и освобождать для него память, либо копировать содержимое массива через memcpy/strncpy.
    Ответ написан
    Комментировать
  • Не компилируется код?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    У вас операция присвоения лежит вне функции. Компилятор ждет там декларации переменных, функций, типов, вот это вот все, а у вас там операция. Перенесите присвоение в main().

    Если вы хотите структуру инициализировать, то можно пользоваться списком инициализации:
    struct {
            int debug;
    } config = {1};
    Ответ написан
    Комментировать
  • Как создавать массив с количеством элементов, равных введенному числу?

    Zoominger
    @Zoominger
    System Integrator
    Вам нужно создать динамический массив.
    Это гуглится на раз-два.
    Ответ написан
    Комментировать
  • Почему значения меняются?

    @res2001
    Developer, ex-admin
    Потому что массив так нельзя вернуть из функции. Сейчас вы просто возвращаете указатель. Пока указатель находится в функции getMas он действительно указывает на массив. Как-только вы вышли из getMas стек схлопнулся (ваш массив находится на стеке) и память, где раньше лежал массив стала не действительной.
    После вызова первого printf, та же память на стеке, которую когда-то занимал ваш массив выделилась под нужды printf, и printf заполнила эту память чем-то своим, поэтому в третьем printf у вас фигня.
    Программа у вас не вываливается с ошибкой, потому что в стеке память всегда выделена. "Схлопывание стека" - это просто уменьшение/увеличение регистра указателя на стек.

    У вас есть 2 вариант.
    1. Простой - выделить массив в main, передать его в getMas. Из getMas уже можете ничего не возвращать, только заполняете там массив.
    2. Выделяете динамический массив в getMas с помощью malloc. В main не забудьте освободить память, выделенную для массива. Это плохой вариант, т.к. память выделяется на одном уровне программы, а освобождается на другом. Но в вашей простой задаче можно пока на это не обращать внимания.
    Ответ написан
    Комментировать
  • Как мне добавить этот код в header и использовать в другом коде?

    bingo347
    @bingo347
    Crazy on performance...
    Давайте по порядку.
    В представленном примере у нас реализация функции, которая не принимает параметров и возвращает указатель на структуру android_app

    struct android_app * - это возвращаемый функцией тип;
    GetAndroidApp - имя функции;
    Конструкция (void) после имени означает, что функция без аргументов, современные компиляторы позволяют писать просто пустые скобки ();
    В фигурных скобках пишут тело функции, то есть ее реализацию.

    Компиляторы C читают код сверху вниз, использовать можно только то, что объявлено выше. Кроме того некоторые сущности вообще могут компилироваться отдельно и уже после линковаться в 1 исполняемый файл.
    Для этого язык C поддерживает декларации сущностей без их реализации, при условии, что сущность будет реализована ниже или где-то еще, что прилинкуется на сборке.
    Для функций декларацией (так же говорят заголовком) является описание ее сигнатуры, то есть для GetAndroidApp таким заголовком будет:
    // описание структуры android_app должно быть выше заголовка его использующего,
    // иначе он будет невалидным. А вот описание полей (реализация) может быть и ниже
    struct android_app;
    
    struct android_app* GetAndroidApp();


    комментарии говорится что я могу добавить его в Header
    Это значит, что данные сигнатуры можно вынести в заголовочный файл (тот что с расширением .h), это позволит вставить его во множество исходников через директиву препроцессора #include
    Ответ написан
    1 комментарий
  • Это же функция которая возвращает структуру?

    это функция, которая возвращает указатель на структуру
    Ответ написан
    Комментировать
  • Если кинуть тело вертикально вверх, какое будет ускорение тела в самой верхней точке?

    @TheCalligrapher
    На протяжении всей траектории полета ускорение тела постоянно и равно g (пренебрегая сопротивлением среды и удалением от поверхности Земли).

    Отмеченный ответ о "нулевом ускорении" в верхней точке неверен и грубейше безграмотен.
    Ответ написан
    Комментировать
  • Если кинуть тело вертикально вверх, какое будет ускорение тела в самой верхней точке?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Ускорение не меняется всё время броска и равно g. При условии что нет сил кроме силы тяжести.
    a = F/m = mg/m = g
    Ответ написан
    Комментировать
  • Если кинуть тело вертикально вверх, какое будет ускорение тела в самой верхней точке?

    @Basiley
    Ускорение свободного падения всегда одинаково вблизи земной поверхности и равно g.
    Скорость подброшенного вертикально вверх тела:
    v = V - g * t
    Здесь V - начальная скорость, t - время. Производная этой функции по времени = g.
    Ответ написан
    1 комментарий