Динамическое размещение/указатель на указатель для обновления массива, содержащего параметр
topicArray
определяется следующим образом:
const char* msgTopic = "Home/Messages";
const char* groupTopic = "Home/All";
char* deviceName = deviceTopic;
const char* topicArry[2] = {deviceTopic, groupTopic};
Но deviceTopic
можно изменить во время выполнения кода, и я хочу, чтобы topicArray
, содержащий deviceTopic
, имел правильное значение после deviceTopic
изменился.
Как это правильно сделать?
@Guy . D, 👍2
Обсуждение1 ответ
Лучший ответ:
▲ 2
Вы можете попробовать что-то вроде этого:
const char* topicArry[2] = {NULL, groupTopic};
const char** const pDeviceTopic = &topicArry[0];
#define deviceTopic (*pDeviceTopic)
Возможно, это не очень элегантно, но теперь, когда вы назначаете, например
deviceTopic = msgTopic;
на самом деле вы пишете в topicArry[0]
.
,
@Edgar Bonet
Смотрите также:
- Создание массива структур, в которых хранятся растровые изображения для работы с u8glib.
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Объявление и использование массива структур в Arduino
- Работает с gcc, но не с Arduino. ошибка: taking address of temporary array
- Поддерживает ли Arduino C++ динамические массивы объектов ?
- Почему структура переменного размера не компилируется в Arduino IDE?
- Получена ошибка недопустимого преобразования из 'const char*' в 'const uint8_t*
- Как масштабировать растровое изображение (массив uint8_t) в Arduino?
не делайте массив «постоянным» с помощью «const», и вы можете изменить содержащиеся в нем значения (указатели), @Juraj
@Juraj Я удалил const из массива и все остальные переменные, но массив все равно не изменился, @Guy . D
ты меняешь его?, @Juraj
как сказано: «Я удалил
const
», @Guy . Dчтобы иметь возможность установить значение
topicArray[0] = "что-то"
, @Juraj