尝试从结构指针访问int:编译但不运行

时间:2015-05-28 22:39:43

标签: c pointers struct

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

#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;
}

错误在哪里以及需要更改的内容?

2 个答案:

答案 0 :(得分:3)

您没有为pt2指针指向的内容分配任何内存。因此,当你执行

pt1.pt2->num = 7;

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

答案 1 :(得分:0)

你应该像这样分配内存:

int main() {
pt1.num = 9;
pPoint new = (struct point *)malloc(sizeof(struct point));
pt1.pt2 = new;
pt1.pt2->num = 7;
printf("%d ", pt1.num);
printf("%d\n", pt1.pt2->num);
return 0;
}