Ivalue required as left opend of assigment - C (СИ)
Формулировка задачи:
Здравствуйте!
В строке: (temp+i) = NULL;, возникает ошибка: ivalue required as left opend of assigment.
Подскажите, пожалуйста, как её исправить?
spisok *newarr(int size)
{
spisok *temp;
if ((temp=malloc(sizeof(spisok)*size)))
{
int i=0;
while(i < size)
(temp+i) = NULL;
return temp;
}
else
return NULL;
}Решение задачи: «Ivalue required as left opend of assigment»
textual
Листинг программы
int main()
{
spisok *head;
newarr(&head, 10);
(head+1)->data=10;
}
Объяснение кода листинга программы
В данном коде выполняются следующие действия:
- Объявляется указатель
headна вершину списка. - С помощью функции
newarrвыделяется память под список из 10 элементов, и указывается, что первый элемент списка будет хранить указатель на следующий элемент (для удобства работы со списком). - Указатель
headуказывает на первый элемент списка. - Указатель
(head+1)указывает на второй элемент списка. - Значение
10присваивается второму элементу списка.