Установка указателя массива на null при объявлении

Как установить указатель массива на null?

У меня есть указатель на массив из 3 целых чисел, который я пытаюсь установить в null.

целое число (*EXCLUSIVE_COLOR)[3];

По этой ссылке я пытался установить для него значение null при инициализации.
Однако это не присваивает ему нулевое значение. Он присваивает элементам массива три «случайных» целых числа:

{128, 447, 451

Как сделать так, чтобы он указывал на нулевое или пустое значение?

, 👍0

Обсуждение

если вы назначаете значение null, проверьте его на значение null, а не читайте, @Juraj

Что вы ожидали получить, прочитав нулевой указатель? Это неопределенное поведение. Это может дать вам что угодно. Если вы хотите, чтобы вещь указывала на ноль, сделайте это. Это не то же самое, что присвоить нулевой указатель., @Delta_G

Отвечает ли это на ваш вопрос? Присвоение элемента многомерного массива второму массиву, @DataFiddler


1 ответ


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

5

Вот полный пример, показывающий все, о чем вы спрашивали за последние несколько дней:

int colors[][3] = {
    {255, 0, 0},
    {0, 255, 0},
    {0, 0, 255}
};

#define NCOLOR (sizeof(colors) / sizeof(colors[0]))

int *EXCLUSIVE_COLOR = NULL;

void setup() {
    Serial.begin(115200);
    Serial.print("You have ");
    Serial.print(NCOLOR);
    Serial.println(" colors defined.");
    reportColor();
    EXCLUSIVE_COLOR = colors[2];
    reportColor();
    EXCLUSIVE_COLOR = NULL;
    reportColor();
}

void loop() {

}

void reportColor() {
    if (!EXCLUSIVE_COLOR) {
        Serial.println("Color is not set");
    } else {
        Serial.print("Color is set to ");
        Serial.print(EXCLUSIVE_COLOR[0]);
        Serial.print(",");
        Serial.print(EXCLUSIVE_COLOR[1]);
        Serial.print(",");
        Serial.println(EXCLUSIVE_COLOR[2]);
    }
}

У вас есть набор цветов. У вас есть указатель, который может указывать на цвет или ни на что. Он начинает указывать ни на что. Код распознает, что он ни на что не указывает, и сообщает об этом. Он назначается определенному цвету в вашем массиве цветов. Код распознает, что теперь это допустимое значение, и сообщает об этом. Затем указатель снова ни на что не указывает. Опять же, код распознает это и сообщит вам об этом.

Результат:

You have 3 colors defined.
Color is not set
Color is set to 0,0,255
Color is not set
,