指针找错c语言,C语言:十九 程序找错 结构体内的指针使用前要确定指向

程序一:

struct student

{

char *name;

int score;

} stu,*pstu;

int main()

{

strcpy(stu.name,"Jimy");

stu.score = 99;

return 0;

}

问程序有何错误?

答:错误在于struct中只是定义了指针name,并未分配空间的情况下就strcpy。

应在main中strcpy之前加上:

stu.name=(char*)malloc(sizeof(char)*某数)

程序二:

int main()

{

pstu = (struct student *)malloc(sizeof(struct student));

strcpy(pstu->name,"Jimy");

pstu->score=99;

free(pstu); //记得释放指针,最好加一句pstu= NULL

return 0;

}

解析:

尽管分配了结构体指针pstu指向的内存空间,但成员name指针扔未被分配空间,应在strcpy前加上:

pstu->name = (char*)malloc(sizeof(char)*某数)

原文:https://www.cnblogs.com/wuqi1003/p/12239665.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值