A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这种方法比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);//常规写法


        }

16 个回复

正序浏览
kenloo 中级黑马 2014-12-26 15:09:01
17#
xiezhongmin 发表于 2014-12-26 14:21
谁同时有mac,又在windows环境下装有 VC6.0 实验一下,是不是环境不同的原因???????? ...

GCC有win版本的,撸主可以自己试试。
回复 使用道具 举报
本人愿意悬赏黑马币!!!!!!!!!!!!!!
回复 使用道具 举报
谁同时有mac,又在windows环境下装有 VC6.0 实验一下,是不是环境不同的原因????????
回复 使用道具 举报
你是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
回复 使用道具 举报
这是vc6 的运行结果:1  xie  5000
1  xie  5000
2  li   4000
2  li   4000
3  xu   3000
3  xu   3000
Press any key to continue

没有一点错误,真是奇怪???????????
回复 使用道具 举报
D:\QQ截图.png我用vc6 运行出来是可行的,下面是运行结果:
回复 使用道具 举报
我用vc6 运行出来是可行的:下面是运D:/QQ截图.png行结果:
回复 使用道具 举报
Xwoder 中级黑马 2014-12-26 11:07:59
10#
xiezhongmin 发表于 2014-12-26 01:31
仔细看看printf两行代码的不同吧,然后再思考,思考完了再回答,不要自负,编程没有想象的那么肤浅 ...

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

我就不明白,你所说的这种写法也正确,暂时不知道原因,正确在哪里?我真心看不懂,另请高明吧
回复 使用道具 举报
要同桌吗?:loveliness:
回复 使用道具 举报
还没学到明天学到在看看把!
回复 使用道具 举报
忘记说了2种方法运行结果是一模一样的
回复 使用道具 举报
Xwoder 发表于 2014-12-26 00:25
哪里不明白了?lists表示结构体数组第i个元素的首地址,你用%d格式输出了而已。没有什么特别呀,哪里不明白 ...

仔细看看printf两行代码的不同吧,然后再思考,思考完了再回答,不要自负,编程没有想象的那么肤浅
回复 使用道具 举报
Xwoder 发表于 2014-12-26 00:25
哪里不明白了?lists表示结构体数组第i个元素的首地址,你用%d格式输出了而已。没有什么特别呀,哪里不明白 ...

你真的还没看出来?,本人已经彻底想明白
回复 使用道具 举报
哪里不明白了?lists[i]表示结构体数组第i个元素的首地址,你用%d格式输出了而已。没有什么特别呀,哪里不明白,
回复 使用道具 举报
完整代码:
#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;
}
回复 使用道具 举报
有高手能解答下么,结构体数组遍历可以这么精简,为什么百度都没找到答案?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马