Я столкнулся с вышеуказанной проблемой. Имея int8_t массив:Ansi C int16_t ссылка на массив int8_t
int8_t i8array[3];
i8array[0] = 10;
i8array[1] = 15;
i8array[2] = 100;
И я хочу, чтобы не только преобразовать, но и ссылаться на int16_t на i8array [1]. Так что я хочу новую переменную i16var, которая является int16_t со значением 15 < < 8 + 100 = 3940.
И если я изменю i16var в 3941, он должен изменить i8array в пункт № 2 от 100 до 101.
Есть ли у ansi C этот объект? Я пробовал много вещей, и даже здесь, я только что нашел ответы на перевод между этими типами.
Во избежание недоразумений, i8array может иметь другие детали после # 2, который не интересен для i16var. – Daniel
Вы говорите, что вы многое пробовали. Что вы пробовали? Добавьте это к своему вопросу. –
То, что вы пытаетесь сделать, не выполнимо надежно. Кроме всего прочего, существуют машины, в которых '& i8array [1]' не будут правильно выровнены, чтобы обрабатываться как указатель 'int16_t'. Вы предполагаете, что в памяти имеется большой размер шрифта; возможно, это не так, как работает ваш процессор. Кроме того, вы хотите, чтобы две переменные ссылались на одни и те же местоположения; вы можете сделать это только с помощью «union» или с указателями. Вы можете попробовать использовать 'int16_t * i16p = (int16_t *) & i8array [1];', а затем читать с использованием 'int16_t i16 = * i16p;' и писать с помощью '* i16p = 3941;', но это может быть или не быть аварийно может или не может дать желаемый результат. –