簡體   English   中英

我的 C 程序不起作用,除非我在其他所有內容之前添加 printf

[英]My C program doesn`t work unless I add a printf before everything else

我嘗試運行代碼,它終止並且不打印任何內容,但是如果我在主文件的第一行包含 printf 語句,它就可以工作。 為什么?

#include <stdio.h>
#include <stdlib.h>

typedef struct node TNode;
typedef struct list TList;

struct list{
    TNode *node;
};

struct node{
    int data;
    TNode *next;
};

TList* buildList(){
    TList *list;
    list = (TList*)malloc(sizeof(TList));
    list->node->next = NULL;
    printf("\nList was built successfully\n");
    return list;
}


int main(){
    TList *myList = buildList();
    myList->node->data = 5;
    printf("\nData: %d\n", myList->node->data);
    return 0;
}

您正在訪問list->node->next而沒有初始化list->node 為節點分配 memory 並將指向它的指針分配給list->node

#include <stdio.h>
#include <stdlib.h>

typedef struct node TNode;
typedef struct list TList;

struct list{
    TNode *node;
};

struct node{
    int data;
    TNode *next;
};

TList* buildList(){
    TList *list;
    list = (TList*)malloc(sizeof(TList));
    list->node = (TNode*)malloc(sizeof(TNode));    // <---
    list->node->next = NULL;
    printf("\nList was built successfully\n");
    return list;
}


int main(){
    TList *myList = buildList();
    myList->node->data = 5;
    printf("\nData: %d\n", myList->node->data);
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM