Я написал программу на C. Какая-то часть кода, который находится внутри функции выглядит следующим образом:Почему я не могу инициализировать и объявлять указатель на указатель на NULL в C?
struct node* functionName(struct node *currentFirstPointer){
struct node **head = NULL;
*head = currentFirstPointer;
return *head;
}
Здесь node
является структурой. Но эта строка дает мне segmentation fault
, когда я запускаю программу. Но если я объявляю и инициализирую указатель на указатель в отдельных операторах внутри той же функции, что и ниже, тогда он отлично работает.
struct node* functionName(struct node *currentFirstPointer){
struct node **head;
*head = NULL;
*head = currentFirstPointer;
return *head;
}
Возможно, причина в том, что 1-й блок не работает, а 2-й блок работает нормально?
Вы хотите создать [___MCVE___] (http://stackoverflow.com/help/mcve)? –
Вы уверены, что первый пример работает, а второй - нет? Потому что это не имеет никакого смысла. Разве ты не имел в виду наоборот? Если первый пример вызывает ошибку seg, проблема не в отправленном коде. – Lundin
Я понимаю, что это неопределенное поведение в вашем случае, но можете ли вы рассказать мне, какой компилятор вы используете для этого, потому что я не могу воспроизвести это в Visual Studio. –