黑马程序员技术交流社区

标题: 自己乱尝试的另一种结构体遍历输出的方法,MJ老师没有讲 [打印本页]

作者: xiezhongmin    时间: 2014-12-25 22:58
标题: 自己乱尝试的另一种结构体遍历输出的方法,MJ老师没有讲
这种方法比MJ老师讲的方式更加精简方便,不知道是老师没提,还是后面视频中会讲到,后面的我还没看,你们不觉得结构体的遍历挺麻烦的吗?下面是我的代码:

        for (int i=0; i<3; i++)
        {
                printf ("%d\t %s\t %d\n",lists[i]);//这种写法也正确,暂时不知道原因
                printf ("%d\t %s\t %d\n",lists[i].ranking,lists[i].name,lists[i].score);//常规写法


        }
作者: xiezhongmin    时间: 2014-12-25 23:20
有高手能解答下么,结构体数组遍历可以这么精简,为什么百度都没找到答案?
作者: xiezhongmin    时间: 2014-12-25 23:26
完整代码:
#include <stdio.h>


int main (void)
{
        struct list
        {
                int ranking;
                char *name;
                int score;
        };

        struct list lists[3]={

                {1,"xie",5000}, //此处是用逗号","隔开
                {2,"li",4000},
                {3,"xu",3000},

        };
                     

        for (int i=0; i<3; i++)
        {
                printf ("%d\t %s\t %d\n",lists[i]);//这种写法也正确,暂时不知道原因
                printf ("%d\t %s\t %d\n",lists[i].ranking,lists[i].name,lists[i].score);


        }
        return 0;
}
作者: Xwoder    时间: 2014-12-26 00:25
哪里不明白了?lists[i]表示结构体数组第i个元素的首地址,你用%d格式输出了而已。没有什么特别呀,哪里不明白,
作者: xiezhongmin    时间: 2014-12-26 01:25
Xwoder 发表于 2014-12-26 00:25
哪里不明白了?lists表示结构体数组第i个元素的首地址,你用%d格式输出了而已。没有什么特别呀,哪里不明白 ...

你真的还没看出来?,本人已经彻底想明白
作者: xiezhongmin    时间: 2014-12-26 01:31
Xwoder 发表于 2014-12-26 00:25
哪里不明白了?lists表示结构体数组第i个元素的首地址,你用%d格式输出了而已。没有什么特别呀,哪里不明白 ...

仔细看看printf两行代码的不同吧,然后再思考,思考完了再回答,不要自负,编程没有想象的那么肤浅
作者: xiezhongmin    时间: 2014-12-26 01:37
忘记说了2种方法运行结果是一模一样的
作者: zx413331474    时间: 2014-12-26 02:01
还没学到明天学到在看看把!
作者: liuxuanlin1234    时间: 2014-12-26 09:50
要同桌吗?:loveliness:
作者: Xwoder    时间: 2014-12-26 11:07
xiezhongmin 发表于 2014-12-26 01:31
仔细看看printf两行代码的不同吧,然后再思考,思考完了再回答,不要自负,编程没有想象的那么肤浅 ...

那你为什么不思考就来问问题呢?
GCC下输出结果
2293216         �/         8609552
1         xie         5000
2293216                  0
2         li         4000
2293216                  0
3         xu         3000

我就不明白,你所说的这种写法也正确,暂时不知道原因,正确在哪里?我真心看不懂,另请高明吧
作者: xiezhongmin    时间: 2014-12-26 13:56
我用vc6 运行出来是可行的:下面是运D:/QQ截图.png行结果:
作者: xiezhongmin    时间: 2014-12-26 14:04
D:\QQ截图.png我用vc6 运行出来是可行的,下面是运行结果:
作者: xiezhongmin    时间: 2014-12-26 14:11
这是vc6 的运行结果:1  xie  5000
1  xie  5000
2  li   4000
2  li   4000
3  xu   3000
3  xu   3000
Press any key to continue

没有一点错误,真是奇怪???????????
作者: xiezhongmin    时间: 2014-12-26 14:15
你是mac环境下运行的么?VC6.0运行没错误:

1  xie  5000
1  xie  5000
2  li   4000
2  li   4000
3  xu   3000
3  xu   3000
Press any key to continue
作者: xiezhongmin    时间: 2014-12-26 14:21
谁同时有mac,又在windows环境下装有 VC6.0 实验一下,是不是环境不同的原因????????
作者: xiezhongmin    时间: 2014-12-26 14:38
本人愿意悬赏黑马币!!!!!!!!!!!!!!
作者: kenloo    时间: 2014-12-26 15:09
xiezhongmin 发表于 2014-12-26 14:21
谁同时有mac,又在windows环境下装有 VC6.0 实验一下,是不是环境不同的原因???????? ...

GCC有win版本的,撸主可以自己试试。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2