Загадочная ошибка сегментации при создании связанного списка (функция добавления)

Я пытаюсь создать связанный список на C, но программа падает из-за какой-то загадочной ошибки.

Сначала я попробовал это:

typedef struct product_data product_data;

struct product_data {
 int product_code;
 int product_size;
 product_data *next;
};

product_data *products_head = NULL;
product_data *products_tail = NULL;

int main() {
    int newcode = 5;
    int newsize = 5;
    products_head->product_code = newcode;
    products_head->product_size = newsize;
    products_head->next = NULL;

    return 0;
}

К сожалению, программа вылетает без каких-либо сообщений об ошибках.

Затем я изменил некоторые детали:

typedef struct product_data product_data;

struct product_data {
 int product_code;
 int product_size;
 product_data *next;
};

product_data *products_head = NULL;
product_data *products_tail = NULL;

int main() {
    product_data *newproduct;
    int newcode = 5;
    int newsize = 5;
    newproduct->product_code = newcode;
    newproduct->product_size = newsize;
    newproduct->next = NULL;

    products_head = newproduct;

    return 0;
}

На этот раз сбоев не было, вроде работает. Я понятия не имею, почему.

Есть идеи?

Заранее спасибо!

0
задан anatolyg 5 June 2012 в 20:48
поделиться