首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试从struct指针访问int :编译但不运行

尝试从struct指针访问int :编译但不运行
EN

Stack Overflow用户
提问于 2015-05-29 06:39:43
回答 2查看 41关注 0票数 2

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

代码语言:javascript
复制
#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;
}

错误在哪里,需要更改的是什么?

EN

回答 2

Stack Overflow用户

发布于 2015-05-29 06:44:36

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

代码语言:javascript
复制
pt1.pt2->num = 7;

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

票数 3
EN

Stack Overflow用户

发布于 2015-05-29 07:02:48

您应该像这样为它分配内存:

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30518219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档