楼主你好,按着你的程序我又在里面加了几个输出
- #include <stdio.h>
- int main()
- {
- struct Date
- { int year;
- int mouth;
- int day;
- };
- struct Date day = {2014,7,21};
- printf("%p\n",day);/*他输出的是一个没规则的数据,这不符合规则,%p是输出地址的,你后面没有加地址,day是你定义个变量*/
- printf("%p\n",&day);//这里输出的是你定义的变量day在内存中的地址
- printf("%p\n",&day.day);//这个输出的是你结构体中的day的地址
- printf("%p\n",&day.mouth);//这个输出的是你结构体中mouth的地址
- printf("%p\n",&day.year);//这个你输出的是你结构体中year的地址,它和你定义的变量day是同一个地址
- return 0;
- }
复制代码
这里可能说的比较抽象,我给你改下
- #include <stdio.h>
- int main()
- {
- struct Date
- { int year;
- int mouth;
- int day;
- };
- struct Date n = {2014,7,21};
- printf("%p\n",n);/*他输出的是一个没规则的数据,这不符合规则,%p是输出地址的,你后面没有加地址,n 是你定义个变量*/
- printf("%p\n",&n);//这里输出的是你定义的变量n在内存中的地址
- printf("%p\n",&n.day);//这个输出的是你结构体中的day的地址
- printf("%p\n",&n.mouth);//这个输出的是你结构体中mouth的地址
- printf("%p\n",&n.year);//这个你输出的是你结构体中year的地址,它和你定义的变量n是同一个地址
- return 0;
- }
复制代码
两个对比着看你会明白了一些,你的printf("%p\n",day);输出的值和下面我给你举得这个例子类似你看下- #include<stdio.h>
- int main()
- {
- int a = 10;
- printf("%p",a);
- return 0;
- }
复制代码
这里的printf("%p",a);输出的也是一段无规则的数据,那个day就相当于这里的a
我也是个初学者,可能说的含糊,你有不明白的咱俩在一起讨论 |