qq_50508673 2020-10-19 16:01 采纳率: 0%
浏览 3226

警告 C6001 使用未初始化的内存“*head”。 这个提示是为什么啊?

警告 C6001 使用未初始化的内存“*head”。

#include
#include
#include
#include
using namespace std;

typedef struct list {
int number;
struct list* next;
}list;

void build(list* head,int n) {
list* p,* rear = head;
for (int i = 0; i < n; i++) {
list* p = new list;
cin >> p->number;
p = p->next;
rear = p;
}
rear->next = NULL;
}

int main() {
list* head = new list;
list* p = head->next;
int n,m,flag;
cin >> n;
build(head, n);
while (n > 0) {
cout << p->number;
p = p->next;
}

}

这个报错是为什么啊。。。。。想了好久想不明白。。。。。

  • 写回答

1条回答 默认 最新

  • 泡视界 2020-10-20 09:47
    关注

    你这写法很有问题啊朋友。
    首先你改改main,这里先只说main的问题

    int main() {
    list* head = new list;
    list* p = head->next;   //这句好好想想
    int n,m,flag;
    cin >> n;
    

    你新建了一个头节点,还没给他初始化, 怎么就用指针p指向头节点的next了呢?
    你参考一下代码好好想想

    int main() {
    list* head = new list;
    head->next =nullptr;
    
    list* node1 = new list;  
    head->next = node1;
    
    list* p = head->next;
    
    int n,m,flag;
    cin >> n;
    
    
    评论

报告相同问题?