我正在尝试从int指针pPoint访问struct。下面的代码可以编译,但当程序在命令提示符下运行时,我的计算机显示程序已停止工作。
#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;
}错误在哪里,需要更改的是什么?
发布于 2015-05-29 06:44:36
您尚未为pt2指针所指向的内容分配任何内存。因此,当您执行
pt1.pt2->num = 7;您正在向未初始化指针的末尾写入一个值。这是未定义的行为。在尝试为其中的变量赋值之前,需要确保pt2指向有效的point结构,
发布于 2015-05-29 07:02:48
您应该像这样为它分配内存:
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;
}https://stackoverflow.com/questions/30518219
复制相似问题