Динамическое размещение/указатель на указатель для обновления массива, содержащего параметр

topicArray определяется следующим образом:

const char* msgTopic = "Home/Messages";
const char* groupTopic = "Home/All";
char* deviceName = deviceTopic;
const char* topicArry[2] = {deviceTopic, groupTopic};

Но deviceTopic можно изменить во время выполнения кода, и я хочу, чтобы topicArray, содержащий deviceTopic, имел правильное значение после deviceTopic изменился.

Как это правильно сделать?

, 👍2

Обсуждение

не делайте массив «постоянным» с помощью «const», и вы можете изменить содержащиеся в нем значения (указатели), @Juraj

@Juraj Я удалил const из массива и все остальные переменные, но массив все равно не изменился, @Guy . D

ты меняешь его?, @Juraj

как сказано: «Я удалил const», @Guy . D

чтобы иметь возможность установить значение topicArray[0] = "что-то", @Juraj


1 ответ


Лучший ответ:

2

Вы можете попробовать что-то вроде этого:

const char* topicArry[2] = {NULL, groupTopic};
const char** const pDeviceTopic = &topicArry[0];
#define deviceTopic (*pDeviceTopic)

Возможно, это не очень элегантно, но теперь, когда вы назначаете, например

deviceTopic = msgTopic;

на самом деле вы пишете в topicArry[0].

,