c - 包含节点的简单 C 编程代码可以运行,但会在代码块上产生错误

标签 c nodes codeblocks

//该程序创建一个带有 2 个指针变量的结构节点、一个机场和一个到另一个节点的链接。它只是连接多伦多、迈阿密和波士顿机场,并通过 while 循环将其打印出来。该代码有效,但我得到 point.exe 停止工作。我拍了一张照片。 https://gyazo.com/e58ba30ea0da3e8039ad445fb3128d21

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

typedef struct node{
    char * AIRPORT[4];
    struct node * LINK;

} nodez;

int main (){
    nodez *J,*K;
    J = malloc(sizeof(nodez));
    if (J == NULL){
        return 1;

    }
    strcpy(J->AIRPORT, "TOR");
    J->LINK = malloc(sizeof(nodez));
    if (J -> LINK == NULL){
        return 1;

    }
    strcpy(J->LINK->AIRPORT, "MIA");
    J->LINK->LINK = malloc(sizeof(nodez));
    if (J -> LINK -> LINK == NULL){
        return 1;

    }
    strcpy(J->LINK-> LINK -> AIRPORT, "BOS");

    nodez *current = J;
    while (current){
        printf("%s\n", current -> AIRPORT);
        current = current -> LINK;

    }
    return 0;
}

这是我得到的图片

最佳答案

nodez 结构的 AIRPORT 成员应定义为 char AIRPORT[4];,目前定义它是一个数组4 指向 char 的指针。编译器会产生不应被忽略的警告。

此外,您构造了一个链接节点列表,但忘记将最后一个节点的 LINK 设置为 NULLmalloc() 返回未初始化的内存,LINK 成员可能包含无效地址,当您迭代列表时会调用未定义的行为。

通过在最后一个 strcpy() 之后设置 J->LINK->LINK->LINK = NULL; 来修复它。

关于c - 包含节点的简单 C 编程代码可以运行,但会在代码块上产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39624776/

相关文章:

javascript - 动态改变D3节点的颜色(力向图)

c++ - Crypto++ Code::blocks undefined reference 问题

java - 如何激怒 "Application not responding"

c - `realloc(): invalid next size` 尝试处理未知大小的输入

c - 如何初始化指向不同长度的字符数组的指针数组?

c - C 中指向指针的指针

java - 使用 Item 对象对 LinkedList 进行排序时出现问题

C:如何为生成树释放内存?

c++ - 在代码块 13.12 上成功编译,但在 ideone 或 spoj 上编译错误

c - 如何使用 C win32 CodeBlocks 创建安装向导?