Как правильно заполнить массив из указателей типа 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д