标题:结构体内存问题,请教!!
只看楼主
q215236213
Rank: 4
等 级:业余侠客
威 望:1
帖 子:148
专家分:276
注 册:2012-7-24
结帖率:100%
已结贴  问题点数:20 回复次数:6 
结构体内存问题,请教!!
int main()
{   
 typedef struct Date
    {
        int year;
        int month;
        int day;
    } Date;

    Date *pd = (Date *)malloc(sizeof(Date)) ; // 改成 Date d;
    //printf("%d\n",pd);  
    printf("请输入年份\n");
    scanf("%d",(*pd).year);   //改成  d.year
    printf("%d\n",(*pd).year);  // 改成 d.year
    return 0;
}

当输入数字的时候就出现 内存不能为 written  ,想请教一下,是哪里没有分配内存空间么? 改成后面的那种也会报内存错误!
搜索更多相关主题的帖子: 内存 written return 结构体 
2013-05-01 22:57
q215236213
Rank: 4
等 级:业余侠客
威 望:1
帖 子:148
专家分:276
注 册:2012-7-24
得分:0 
木有人么??在线等
2013-05-01 23:01
小小玉
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:47
专家分:156
注 册:2013-4-13
得分:7 
scanf("%d",(*pd).year);改成scanf("%d",&(*pd).year);输入函数要有取地址符。改过后,你看看你的要求达到的了吗?
2013-05-01 23:24
鈴蘭
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:145
注 册:2013-4-1
得分:7 
楼上正解,如果楼主觉得同时用* 和 & 容易搞错,可以不用*而用->代替,即 scanf("%d",&pd->year)这种表达

菜鸟一枚,回复如有错误,还望谅解!
2013-05-02 08:27
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:6 
scanf("%d",(*pd).year);   //改成  d.year
这句的问题,scanf函数要求的是变量的地址,你这些的是不行的,加个取地址符&

Maybe
2013-05-02 08:49
q215236213
Rank: 4
等 级:业余侠客
威 望:1
帖 子:148
专家分:276
注 册:2012-7-24
得分:0 
一时的疏忽,哎~~
还是不够细心啊!~
2013-05-02 14:12
qldxsun
Rank: 4
等 级:业余侠客
帖 子:125
专家分:240
注 册:2011-6-4
得分:0 
& pd->year 这样就行了
2013-05-04 09:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-406044-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.125389 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved