永发信息网

结构体中的指针同时赋值NULL出错

答案:2  悬赏:80  手机版
解决时间 2021-02-23 06:21
#include
typedef struct path{
struct path* begin;
struct path* end;

}PATH;
int main(){
PATH* path;
path->begin=NULL;

printf("OK\n");

}
注释掉那一行后,正常执行;
加上注释掉的那一行后,编译没问题,但执行报错:
OK
segmenttation fault

;求解为何?
而下面这种{
......

int* p1=NULL;
int* p2=NULL;
......
}
能正确执行;
综上,我很困扰啊!!!
最佳答案
int* p1=NULL;
是定义一个指针变量,指向NULL。

PATH* path;
path->begin=NULL;
相当于 :
int* p1;
*p1 = 33333;
定义了一个指针,但是没有指向有效的内存(野指针),对指针进行写操作当然会出错。应该这样:
PATH path;
PATH *p = &path;
p->begin=NULL;
p->end=NULL;
全部回答
好问题~~ *(void **)&william.sheild= belle 是先取william.sheild的地址,然后强制转为指向指针的指针,然后再对其赋值 经过调试发现: *(void **)&william.sheild = belle;这种方式更为鲁棒 可以试试将void(* sheild)(void);声明为不同类型。比如int(* sheild)(void); tag1的赋值方式将报错,而后者则可以通过 所以作者的用意应该是:就算不知道所需函数的返回类型,也可以正确实现调用
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一个女孩对我说:“你是猴子搬来的救兵吗?”
男属龙,女属兔。买楼房几楼好?
填空题国际单位制中,长度的基本单位是______
这些英语单词的比较级和最高级是什么
为什么新锂电池前三次要充足电
班主任是教语文的好些还是教数学的好些。
南京的邮局下午几点下班?
图示结构超静定次数为()。A.3B.4C.5D.6ABCD
我是国企的合同工,请问可以亨受住房公积金么
卫生间的淋浴喷头下方的罗丝冷热水处接管处10
在钝角三角形ABC中,已知等于a一,b等于二,则最
光华楼干吗用的?是复旦学院吗?
11区地址在什么地方,想过去办事
肝脏射频消融术后性改变什么意思
济宁附近现在有庙会吗?
推荐资讯
psv2000高达破坏者怎么存档
绥化万达广场(建设中)在哪里啊,我有事要去这
马克杯和一般陶瓷白杯有什么区别
九台烧烤在什么地方啊,我要过去处理事情
龙源科技地址有知道的么?有点事想过去
zhttty的小说《无限恐怖》里出提到过的恐怖片
贵定县泓源房地产开发有限公司在什么地方啊,
羚羊车发动机多少公斤
我从淘宝上买了一个月的搜狐会员账号,这个账
自己建团队做seo好还是让seo公司做好呢?
护理人员每年参加继续护理学教育的最低学分是
男性,55岁,黑朦4年,伴胸闷乏力,近1年加重
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?