c语言struct 如何分配空间?

#include"stdio.h"structstu{intnote;intnum[3];};intmain(){structstu*peter;peter=(struc... #include "stdio.h"
struct stu{
int note;

int num[3];

};
int main(){
struct stu* peter;

peter = (struct stu*)malloc(sizeof(struct stu*));

peter->a=100;

peter->num[0]=1;

peter->num[1]=2;

peter->num[2]=3;

printf("%d\n",peter->num[2]);

return 0;

}
为何提示我段错误?而我不给peter指针分配空间,反而可以运行?
敲错了,不是 peter->a ,是peter->note
展开
 我来答
碧海风云

2017-10-11 · 碧海风的秘密小据点!
碧海风云
采纳数:909 获赞数:10281

向TA提问 私信TA
展开全部
peter = (struct stu*)malloc(sizeof(struct stu*));/*这句错了*/
peter = (struct stu*)malloc(sizeof(struct stu));/*应该是这样的*/
/*错误在于申请了一个“stu结构体指针”大小的内存空间,正确的逻辑是应该申请一个“stu结构体”大小的内存空间。核心就在一个“*”*/
shine1991
科技发烧友

推荐于2017-10-11 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部
peter = (struct stu*)malloc(sizeof(struct stu));
更多追问追答
追问
哦,对,是这个愿意。但是为什么我不输入malloc 的时候也可以正常运行呢?什么时候该用 malloc?
追答
对野指针指向空间赋值,你那只是运气好,指向的内存空间被修改后没有引起程序崩溃
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式