Установка указателя массива на null при объявлении
Как установить указатель массива на null?
У меня есть указатель на массив из 3 целых чисел, который я пытаюсь установить в null.
целое число (*EXCLUSIVE_COLOR)[3];
По этой ссылке я пытался установить для него значение null при инициализации.
Однако это не присваивает ему нулевое значение. Он присваивает элементам массива три «случайных» целых числа:
{128, 447, 451
Как сделать так, чтобы он указывал на нулевое или пустое значение?
@McWayWeb, 👍0
Обсуждение1 ответ
Лучший ответ:
Вот полный пример, показывающий все, о чем вы спрашивали за последние несколько дней:
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
- Работает с gcc, но не с Arduino. ошибка: taking address of temporary array
- Передача массивов, глобальных массивов внутри функций, указателей и объявление размеров массивов.
- Почему я не могу получить размер массива указателей
- Передача двумерного массива в функцию
- Поменять местами два массива (используя указатели, а не копирование)
- передача массивов через функцию возвращает неправильные значения
- Можно ли создать массив для функций?
- Создание массива структур, в которых хранятся растровые изображения для работы с u8glib.
если вы назначаете значение null, проверьте его на значение null, а не читайте, @Juraj
Что вы ожидали получить, прочитав нулевой указатель? Это неопределенное поведение. Это может дать вам что угодно. Если вы хотите, чтобы вещь указывала на ноль, сделайте это. Это не то же самое, что присвоить нулевой указатель., @Delta_G
Отвечает ли это на ваш вопрос? Присвоение элемента многомерного массива второму массиву, @DataFiddler