Про указатели вопрос
- Войдите на сайт для отправки комментариев
Пнд, 18/06/2018 - 21:23
//есть uint16_t dist =0x1234; uint16_t* h; //указатель на переменнуютипа uint16_t h=&dist; // в h адрес переменной dist //вывожу Serial.print(String((byte) *(h+0))); Serial.print(" "); Serial.println(String((byte) *(h+1))); //должно вывести 18 (=0x12) и 52 (=0x34) или наоборот //выводит 52 и 192
в чем ошибка?
а если так
спасибо!
спасибо!
поняли, в чем дело было?
да, вроде разобрался с указателями :)
осталось на практике закрепить понятое.
Какие сообразительные люди пошли. Меня до сих пор указатели в ряде случаев в ступор вводят, а тут на трех строчках обучение прошел ))
да я с указателями познакомился ещё на СМ4/PDP11 . так что тут осталось только в применении к С разобраться
практика использования...
есть структура
есть функция
т.е. есть структура, в функции параметро data , надо "наложить" структуру (пременную с такой структурой) на память data1
что б обращаться к отдельным частям data1 как элементам структуры.
в Serial.println(?????); вывести (к примеру) String comm[5], этой структуры
А в чем вопрос? Serial.println(in_comm->delim);
in_comm это тип структуры. тогда уж так (наверное) Serial.println(in->comm);
но компилятор ругается
no matching function for call to 'String(String [5])'
Ну правильно - у тебя там массив из 5 стрингов. Тебе все эти 5 стрингов надо вывести?
там апечатка
Ну и в чём проблема-то?
? Опечатка у тебя нормальная такая - вместо массива char массив из экземпляров String. Приведённый в этом посте вариант - для массива char - выведет тебе всю строку.
Да, не заметил ещё, что ты дичь делаешь - в функцию передаёшь экземпляр класса String и пытаешься скастить его к своей структуре. Так не пойдёт, товарищ ;) Код я поправил.
Если у тебя внутри String data1, что ты передаёшь в функцию, лежит строка с данными структуры, то делать надо примерно вот так:
метод c_str() класса String возвращает указатель на область памяти, где класс String держит свои данные.
спасибо
не совсем про указатели , но близко
есть такое
char x1[6] длину надо задавать на 1 больше, чем строка туда записываемая, для ограничения строки в конце нулём. это не совсем подходит. можно обойти это если заполнить таким образом
что просто не красиво.
есть ли чтоб было красиво и без 0 на конце и "красиво"
я сейчас получаю строку xxx04_|111111
делаю так in->comm[5] = 0; чтоб получить строку, тогда сравнивается
есть вариант как сравнить два char/byt/uint8_t без явного for?
Подсказать, что есть strcmp / memcmp ? ))
в Явах этих ваших бесовских функций нет.
Подсказать, что есть strcmp / memcmp ? ))