Как правильно заполнить массив из указателей типа void* - C (СИ)
Формулировка задачи:
Насколько я понимаю, его можно заполнить, только присваивая адреса элементам
Как это реализовать, если данные вводятся с клавиатуры?
Ведь возникает проблема: Ввели данные в переменную, присвоили ее адрес элементу массива
Если так продолжить, то все элементы массива будут иметь одинаковый адрес
Как вывернуться из такого?
Решение задачи: «Как правильно заполнить массив из указателей типа void*»
textual
Листинг программы
ptr_arr[ i ] = &var_arr[ i ];
Объяснение кода листинга программы
В данном коде происходит следующее:
- Создается массив
var_arrтипаvoid*размеромnэлементов. - В каждом элементе массива
var_arrхранятся указатели на переменные типаint. - Создается массив
ptr_arrтипаvoid*размеромnэлементов. - В цикле
forпроисходит заполнение массиваptr_arr.- В каждой итерации цикла
forпроисходит следующее:- Переменная
iпринимает значения от 0 доn-1. - Значение
iиспользуется как индекс для доступа к элементу массиваvar_arr. - Результатом выражения
&var_arr[ i ]является указатель на элемент массиваvar_arrс индексомi. - Полученный указатель присваивается элементу массива
ptr_arrс индексомi.
- Переменная
- В каждой итерации цикла
- Возвращаем массив
ptr_arr.