У меня есть следующая очень упрощенная реализация для единственного связанного списка в C:
typedef struct Node{
int data;
struct Node *next;
} node;
void printLL(node * start);
void addNode(node * head, node * add);
int main()
{
node first;
first.data = 99;
first.next = NULL;
node second;
second.data = 11;
addNode(&first, &second);
printLL(&first);
}
void addNode(node * head, node * add)
{
if(head->next)
{
addNode(head->next, add);
}
else
{
head->next = add;
}
}
void printLL(node * start)
{
printf("Data is %d\n", start->data);
if (start->next) {
printLL(start->next);
}
}
Что меня смущает, так это то, что если я не установлю first.next = NULL, я получуошибка EXE_BAD_ACCESS.Это происходит, когда я пытаюсь проверить, установлено ли это свойство или нет, чтобы определить, следует ли делать вызов рекурсивно.Другая вещь, которую я не понимаю, это то, что если я установил first.next, чтобы он указывал на «second», все функции работали, хотя для «second» я не установил явно, что он рядом с NULL.Поэтому кажется, что в значении по умолчанию для указателя, определенного в структуре, есть некоторая несогласованность.Конечно, я, вероятно, делаю что-то совершенно не так, но был бы признателен, если бы кто-то смог пролить свет на этот вопрос.Чтобы свести все к нулю, мои вопросы:
- Какое значение по умолчанию для указателя, определенного в структуре?
- При условии отсутствия значения по умолчанию, существует ли простой способ установить значение по умолчанию в определении структур?(Я просмотрел несколько книг на Си и не смог найти ответ на этот вопрос)