[英]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.