В принципе, я хочу знать, почему это (передавая адрес памяти списка в качестве параметра):В чем разница между передачей и var в * var и var в var?
void init_lista (elemPtr *list) {
*list = NULL;
}
int main(){
elemPtr list;
init_list(&list);
//[...]
}
отличается, чем это (передача только содержание списка):
void init_lista (elemPtr list) {
list = NULL;
}
int main(){
elemPtr list;
init_list(list);
//[...]
}
OBS : elemPtr - тип указателя структуры (typedef struct elem *elemPtr
).
То, что я понимаю из &
и *
, состоит в том, что первый получит адрес памяти var, а последний получит значение, на которое оно ссылается. По этой концепции оба раздела кода должны быть эквивалентными, но первый работает отлично, а второй компилирует, но дает мне ошибку времени выполнения. Почему это?
Что такое elemPtr? Это typedef для какого-то указателя? –
Это хорошо написано в книге программирования C. –
И объяснение этого зависит от ваших прежних знаний и может занимать несколько страниц. –