关于指针内存方面的问题

luomingmao129 2008-02-27 10:33:02

#include <stdio.h>

struct S{
int i;
int *p;
};

int main()
{
struct S s;
int *p = &s.i;
p[0] = 4;
p[1] = 3;
s.p = p; // 1
s.p[1] = 1; // 2
s.p[0] = 2; // 3
}

当程序运行到注释3那一行时候就会报错,如果把注释1那行注释掉的话则运行到注释2的时候就报错,请问一下是什么原因?
...全文
66 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
VxD1 2008-02-27
  • 打赏
  • 举报
回复
非法访问内存
luomingmao129 2008-02-27
  • 打赏
  • 举报
回复
谢谢了
Seanxiaoxiao 2008-02-27
  • 打赏
  • 举报
回复
s.p[1] = 1; 这一句把p的值改成0X00000001了
下一句再访问,就造成了内存的非法读取了
baihacker 2008-02-27
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20071102/14/19449798-1147-4c57-816e-78fa0e77b538.html
已经讨论过的,见上面网址!
hy_number_one 2008-02-27
  • 打赏
  • 举报
回复
关注

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧