Pointer
Переменная в C/C++, которая хранит тип и расположение данных в памяти.
Есть поговорка старого программиста:
"Проблема C в том, что слишком легко выстрелить себе в ногу.
С C++ это намного сложнее, но когда вы это сделаете, вы потеряете всю ногу!"
Большинство проблем связано с указателями C/C++ и с тем, что люди не совсем понимают, как их использовать.
Ссылки
- Вот основное описание указателей, начиная с самого начала.
Вопросы, связанные с [pointer]:
- Как передать объект Encoder конструктору другого класса Я пытаюсь создать класс (Arm), который управляет рукой. У рук есть 2 двигателя, каждый с энкодером, поэтому я передаю 4 целых числа для контактов и пытаюсь передать 2 указателя (по одному для…
- Разница между (*(volatile unsigned int *) и (volatile unsigned int)? Я просматривал учебные пособия по программированию STM32 без операционной системы . Я не мог понять назначение приведенного ниже кода #define RCC_AHB1EN_R (*(volatile unsigned int *)(RCC_BASE +…
- Как отправить несколько байтов с помощью Wire без копирования Когда мне нужно отправить через Wire несколько байтов, например, длинное целое число, я преобразую его в массив байтов и указываю длину long int i; Wire.write((byte*)&i, 4); Но если я…
- Преобразование строки c integer в unsigned char Я пытаюсь разобраться с типами между двумя разными библиотеками. Суть в том, что я использую библиотеку ArduinoWebsockets для получения информации, поступающей из моего api, которую я затем хочу…
- Массив из существующих массивов У меня есть куча 3D-массивов в следующем виде: byte lines[][4][2] { { {B00000000, B11110000 }, {B00000000, B11110000 }, …
- Не удается прочитать значения, хранящиеся в указателе bool* Я пытаюсь прочитать значения, хранящиеся в указателе bool*, из вызова катушки modbus. Я использую библиотеку modbus-esp8266. все в порядке с входными регистрами и регистрами хранения, но я не могу…
- esp32 аварийно завершает работу при попытке разыменования значения указателя У меня есть прослушиватель websocket, который дает мне std::строку полезной нагрузки моего сообщения (мне нужны байты), и я написал функцию, которая извлекает каждый из байтов и помещает их в…
- Сбой при использовании переменных ссылок в классах Теоретическая Q У меня возникли некоторые проблемы при использовании ссылочной переменной в классе. Класс A имеет значение int a=0 . Класс B имеет экземпляр класса A и ссылается на int…
- Выделение памяти указателя в функции Я хотел бы знать, как Arduino выделяет память для указателей в аргументах функций. Например. У меня есть этот код, который использует 192 байта (компилятор Arduino IDE: Глобальные переменные…
- Почему я не могу получить размер массива указателей ну, я пытаюсь получить размер массива для преобразования шестнадцатеричного значения в значение int. но если я попытаюсь получить размер массива, он будет возвращаться каждый раз 2. На самом деле.Я…
- Преобразование беззнакового целого числа в указатель const char Я знаю, что это простой базовый материал языка Си, но я не могу полностью понять его или найти решение при поиске и чтении. У меня есть метод который я хочу вызвать из библиотеки которому нужен…
- Передача двумерного массива в функцию Я работаю над проектом светодиодной матрицы, где запускаю серию паттернов, сделанных из растровых кадров. Вот пример: https://vimeo.com/564184465 Прямо сейчас я использую серию вызовов методов…
- Запуск нескольких функций с различной структурой аргумента/возврата по одному указателю функции Правка: Я попробовал простой код в Arduino IDE, который должен был сделать в первую очередь вместо того, чтобы делать это в настольном компиляторе. Потому что результаты эксперимента отличаются. В…
- Существует ли какой-либо рабочий аналог пары std::function и std::bind в Arduino? И ArduinoSTL , и StandardCplusplus их не поддерживают. Они реализуют версию, совместимую с c++03 (не c++11). Эта функция удобна при разработке библиотек, работающих с обратными вызовами. И…
- Почему считается плохой практикой использовать ключевое слово "new" в Arduino? Я уже задавал этот вопрос: Требуется ли удалять переменные перед сном? На этот вопрос @Delta_G опубликовал этот комментарий: ... Действительно, на микроконтроллере я бы создал объект в…
- Можно ли создать массив для функций? Допустим, я хочу создать 10 функций с именем Function1, Function2 до 10. Каждая функция используется, если определенная переменная равна ее номеру. Вместо того чтобы использовать отдельные функции,…
- Доступ к функции в объекте через `->` приводит к сбою (сбросу) Arduino У меня есть несколько классов, которые вызывают друг друга, работающих на Arduino Mega. Я использую библиотеку ArduinoSTL, чтобы получить библиотеку std, в первую очередь std::vector. Основная…
- Проблемы с преобразованием uint32_t в char* Я использую емкостный сенсорный датчик, который имеет 12 точек касания и сохраняет данные о состоянии в виде двоичного числа. Я хочу принять это состояние, добавить немного данных на передний…
- Получить массив символов с помощью модуля SIM900 Я пытался получить массив символов с помощью SIM900, но не смог. Я могу получить только один символ, например 'G' , но я хочу получить строку "abcd" . Когда я использовал char* для сохранения…
- Как указать имя таймера в зависимости от чипа, в который он будет компилироваться? Мне нужно включить прерывание по таймеру для чипа, а тем временем я тестирую код на Arduino Nano, а не (кормить чип, тестировать чип)++ . Итак, как часть кода я должен TIMSK0 |= (1 <<…
- Установка указателя массива на null при объявлении Как установить указатель массива на null ? У меня есть указатель на массив из 3 целых чисел, который я пытаюсь установить в null . целое число (*EXCLUSIVE_COLOR)[3]; По этой ссылке …
- Ошибка получения адреса временного массива при передаче массива составных литералов У меня есть скетч Arduino, который передает массив в метод как составной литерал, но по какой-то причине я продолжаю получать следующую ошибку: void setup() { } void printConcatLine(char…
- Поменять местами два массива (используя указатели, а не копирование) У меня есть два массива, определенные как: uint8_t array1[10]; uint8_t array2[10]; Я хотел бы поменять местами массивы (фактически указатели на каждый массив), используя такой код: …
- Вызов логической функции с вводом указателя символа - не понимаю, как получить обновленное значение указателя Спасибо всем за помощь в поиске решения. Эта библиотека, с которой я работаю, была предварительно написана и является одной из самых глючных аппаратных библиотек, которые я имел несчастье…
- Указатели функций, которые вызывают одну функцию Я читаю файл библиотеки timer.h для основной библиотеки STM, которую я только что установил в аппаратную папку Arduino. Конечно, у меня как у новичка должно быть много вопросов о многих…
- Передача ссылки на объект NeoPixel в пользовательскую библиотеку Я новичок в программировании Arduino и раньше не программировал на C++. Я пытаюсь создать пользовательскую библиотеку для циклического воспроизведения радуги на моей светодиодной ленте NeoPixel. Я…
- Коммутатор потоков с несколькими последовательными портами Я пытаюсь определить несколько последовательных портов (несколько плат управления BMS) и выбрать через глобальную переменную активный порт, это скетч, который я пытаюсь изменить. https://github…
- Я не могу правильно получить строку, которую я отправил через nrf Я использую Arduino Uno и nrf24l01. контролировать данные датчиков. Но это сообщение, которое получает master: ⸮ это мой подчиненный код. void monitoring() { delay(10); radio…
- Работает с gcc, но не с Arduino. ошибка: taking address of temporary array Мне нужно жестко закодировать 8-байтовые адреса в массивы символов длиной 8. Это должно быть сделано во многих местах моего кода (в области функций), поэтому я попытался придумать однострочный код.…
- Вызов функций из массива указателей в библиотеке вызывает ошибку «неопределенная ссылка на» Я пытаюсь создать библиотеку, в которой у меня есть массив указателей на функции. Этот массив используется другими функциями в библиотеке. Это код заголовочного файла: class Lib { public: …
- Как работают массивы? Я уже несколько дней пытаюсь понять, как работают массивы в Arduino IDE. Для лучшего понимания я собрал некоторые фрагменты кода, которые я нашел тут и там, чтобы написать этот скетч: #define…
- проблема с объявлением массива указателей на функцию typedef Спасибо за все ваши отзывы. Это помогло. Я переписал это еще раз, и на этот раз все работает идеально . Я включил три варианта: простой пример с использованием массива указателей на функции,…
- Обновить `символ*` У меня есть класс, содержащий несколько переменных char* : char* msgTopic = "myHome/MSGS"; char* groupTopic = "myHome/All"; char* errorTopic = "myHome/Err"; но я хочу, чтобы он был…
- запись в буфер из последовательного ввода Может кто-нибудь объяснить это поведение, пожалуйста, у меня есть следующий код byte buffer[512]; byte block; byte len; Serial.setTimeout(60000L) ; // ждем 20 секунд для ввода с…
- Проблема с передачей указателя строки от дочернего к родительскому Я пытаюсь передать указатель на const char * от дочернего к родительскому, но явно не понимаю, как это сделать правильно. Вот код, который содержит три класса: 1) родитель 2) Альфа (ребенок) 3_ Бета…
- Возникла проблема с доступом к значениям из указателя Контекст Возможно, это больше вопрос по C++, чем по Arduino, но он касается arduino C++, поэтому я решил начать здесь. Я создаю класс для абстрагирования простой мелодии, которую я хочу…
- Вычислить SHA256 строки и вывести в строку В моем проекте Arduino я хочу вычислить хэш SHA256 строки и сохранить результат в строку, и сделать это рекурсивно много раз (т. е. вычислить хэш хэша хэша и т. д.). Итак, моя цель — иметь надежную…
- ArduinoJSON v6 – передача буфера как параметра функции Я новичок в ArduinoJSON, так что, возможно, это вопрос для новичка.... но я хочу передать StaticJsonDocument в функцию в качестве параметра (позже это должно быть реализовано в библиотека). …
- Ошибка программы при своевременном разыменовании 64-битного int Мой код ведет себя странно. Следующее работает без проблем на Arduino Nano, но, похоже, дает сбой на DUE void putData64(byte* packet, int pos, uint64_t data) { uint64_t* h= (uint64_t*)…
- Разбор массива объекта в конструкторе библиотеки Я пытаюсь разработать библиотеку Arduino, состоящую из двух классов. Я хочу, чтобы WayPointStack хранил массив WPCommand, но не могу заставить его работать. WayPointStack.h #ifndef…
- Передача массивов, глобальных массивов внутри функций, указателей и объявление размеров массивов. Я сейчас в полном замешательстве! Я работаю над проектом, включающим Xbees в режиме API, и мне нужно отправлять в Xbee разные массивы байтов в зависимости от того, какие кнопки я нажимаю. В…
- Создание массива структур, в которых хранятся растровые изображения для работы с u8glib. Я пробовал читать документацию и впадаю в отчаяние, потому что ничего не могу найти. Мне нужно создать массив структур, содержащий растровое изображение, хранящееся в пространстве PROGMEM …
- Динамическое изменение стека вызовов с помощью указателей Можем ли мы в библиотеке C++ Arduino изменить стек вызовов изнутри функции, намеренно уменьшив указатель на переменную стека так, чтобы он вышел за пределы допустимого диапазона? Вот так: void…
- Динамическое размещение/указатель на указатель для обновления массива, содержащего параметр topicArray определяется следующим образом: const char* msgTopic = "Home/Messages"; const char* groupTopic = "Home/All"; char* deviceName = deviceTopic; const char* topicArry[2] = {deviceTopic,…
- Интерпретатор и обработчик сообщений – как сохранить имя функции в структуре? Для проекта мне нужно сохранить массив структур в PROGMEM. Массив MessageTable[] будет состоять примерно из десяти элементов struct InMessage . InMessage выглядит примерно так: struct…
- Инициализировать и читайть из массива указателей PROGMEM на массивы PROGMEM. Я работаю над проектом для Arduino Uno, для которого мне нужно несколько константных массивов байтов. Такой массив инициализируется следующим образом: const byte charR[] PROGMEM = { B01111111…
- Скетч с несколькими классами (.h и .cpp) – как соединить классы Я хотел переместить большую часть функциональности моего скетча в разные классы, чтобы все было лучше организовано. Один класс работал нормально, но когда мне пришлось использовать несколько классов…
- передача массивов через функцию возвращает неправильные значения Я пытаюсь использовать значения массива в какой-то другой функции, но когда я возвращаю данные через функцию, содержимое оказывается неверным. Это файл внешней функции, который я пытаюсь…
- 1