Я пытаюсь создать универсальный (или нетипизированный) массив в C (я знаю, что C ++ делает это проще). В двух словах я хочу выделить массив для хранения массива определенного известного типа (во время выполнения). В реальной реализации это зависит от ввода пользователя.
Я пытался использовать сценарий enum / struct, следуя совету, найденному в нескольких хитах Google, но боюсь, что моя неопытность с пустыми указателями и отсутствие конкретного примера мешают мне получить работающий кусок кода , (Обычно я бы просто купил книгу, но я нахожусь в стране, где я не говорю на языке, а книг по английскому языку не существует.)
Проблема сводится к следующему упрощению: у меня есть изображение (только 1D), где значения пикселей могут быть int, float или double. У меня есть функция, которая скажет мне тип. Все, что я хочу сделать, это сохранить пиксели в массиве соответствующего типа. (На практике эти изображения очень большие, и я мотивирую их экономить память и предотвращать написание блоков кода для каждого типа.)
Я пробовал что-то вроде следующего, но, может быть, это не лучший вариант (фрагмент кода для возможной структуры данных):
enum type {
typeint, typefloat, typedouble
};
struct genericarray {
enum type type;
void *storage;
};
Каким-то образом я хочу сохранить эти пиксели в экземплярах generciarray. Все мои попытки до сих пор превратились в "предупреждение: разыменование" пустых указателей "сторон, которые, я признаю, я не понимаю.
Буду вечно благодарен за любую помощь и, в частности, за некоторый упрощенный пример получения рабочего универсального массива. В примере можно использовать циклы for для инициализации. Я могу понять, как загрузить мои настоящие изображения.