void elementAsRoot(Element **oldRoot, Element *newRoot){
newRoot -> next = *oldRoot;
*oldRoot = newRoot;
}
Эта функция должна вызываться следующим образом:
Element *list = ...some linked list...;
elementAsRoot(&list, ...some new element...);
// now 'list' points to the new first element, not the old one (which is now second)
Чтобы обновить переменную из вызывающей стороны, функции необходим указатель на переменную.Если первый параметр был просто list
, а не &list
, то функция не смогла бы обновить значение list
и поэтому не смогла бы выполнить свою работу.