标题:结构指针
只看楼主
LGD335060087
Rank: 2
等 级:论坛游民
帖 子:36
专家分:13
注 册:2020-3-15
结帖率:80%
已结贴  问题点数:10 回复次数:4 
结构指针
#include"stdio.h"
struct date{
    int year;
    int month;
    int day;
}today,*p;
int main()
{
    today=(struct date){.year=2020,.month=03,.day=15};
    p=&today;

    printf("%p\n",p);
    printf("%d",*p);
    return 0;
}
为什么*p输出一个奇怪的数字?
搜索更多相关主题的帖子: 指针 date 结构 printf int 
2020-03-15 15:41
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:5 
程序代码:
int main()
{
    today=(struct date)
    {
        .year=2020,.month=03,.day=15
    };
    p=&today;

    printf("%p\n",p);
    printf("%d,%d,%d",p->year,p->month,p->day);
    return 0;
}

printf("%p\n",p);
打印了p所指向内存空间的首地址。
printf("%d,%d,%d",p->year,p->month,p->day);
打印了该内存空间所存储的值。
printf("%d",*p);
则是将从首地址开始直到第一个空字符的内存之间的所能组成数字进行打印。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-03-15 15:54
LGD335060087
Rank: 2
等 级:论坛游民
帖 子:36
专家分:13
注 册:2020-3-15
得分:0 
回复 2楼 纯蓝之刃
如果说我要输出struct 中的所有成员就应该写成    printf("%p\n%p\n%p\n",p->year,p->month,p->day);

知识改变命运,代码更改时代
2020-03-15 16:30
LGD335060087
Rank: 2
等 级:论坛游民
帖 子:36
专家分:13
注 册:2020-3-15
得分:0 
回复 2楼 纯蓝之刃
为什么printf("%p",p);输出的地址和    printf("%p\n%p\n%p\n",p->year,p->month,p->day);    输出的第一个地址不同呢

知识改变命运,代码更改时代
2020-03-15 16:35
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
以下是引用LGD335060087在2020-3-15 16:35:31的发言:

为什么printf("%p",p);输出的地址和    printf("%p\n%p\n%p\n",p->year,p->month,p->day);    输出的第一个地址不同呢

概念问题
结构、结构成员、数据类型
2020-03-15 17:36



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




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

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