c - 尝试从结构指针 : compiles but does not run 访问 int

标签 c pointers struct

我正在尝试从 struct 指针 pPoint 访问 int。下面的代码可以编译,但是当程序在命令提示符下运行时,我的计算机说程序已停止工作。

#include <stdio.h>
typedef struct point *pPoint;

struct point {
    int num;
    pPoint pt2; 
} pt1;

int main() {
    pt1.num = 9;
    pt1.pt2->num = 7;
    printf("%d ", pt1.num);
    printf("%d\n", pt1.pt2->num);
    return 0;
}

错误在哪里,需要修改什么?

最佳答案

您尚未为 pt2 指针所指向的内容分配任何内存。因此,当您执行时

pt1.pt2->num = 7;

您正在向未初始化指针末尾的内容写入一个值。这是未定义的行为。在尝试为其中的变量赋值之前,您需要确保 pt2 指向有效的 point 结构,

关于c - 尝试从结构指针 : compiles but does not run 访问 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518219/

相关文章:

c - 将多行添加到文本文件输出?

c++ - 我用 c 编写了一些代码来制作简单的 win32 窗口,但失败了

c++ - 为什么这个 sizeof 运算符会出错?

c - 读取带有分隔符的数据字符串并存储到结构中

c - 在 C 中从类型 void * 分配给类型时出现错误不兼容类型

c - 初始化 sscanf 返回的 unsigned int

有人可以解释这个宏定义吗?

c++ - 指针数组和按引用调用

c - 将数据写入特定内存地址问题

go - 如何解决 Go 中不明确的选择器