19001579 发表于 2010-9-25 22:36:44

struct结构的问题~!

#include "stdio.h"
#include "malloc.h"
struct name_list
{
      char name;
      char sex;
      char age;
      struct name_list *next;
};
/*typedef struct name_list *usr_tab;*/
void main(void)
{
   char i=0;
   char *p;
   struct name_list *usr_tab;
   p=usr_tab=(struct name_list *)malloc(sizeof(struct name_list)*100);
   printf("\n\nlist sizeof:%d\n",sizeof(struct name_list));

    for(i=0;i<40;i++)
   {
      usr_tab->name=i;
      usr_tab->age=i;
      usr_tab->sex=i;
      usr_tab=usr_tab->next;
      }

   usr_tab=p;
   for(i=0;i<40;i++)
      {
         printf("No:%d name:%d age:%d sex:%d \n",i,usr_tab->name,usr_tab->age,usr_tab->sex);
         usr_tab=usr_tab->next;
       }

   printf("/*------------------------------------------*/\n");
   getch();

}
输出的结果总是不对,不知道错在那里了。总查不出来郁闷,前面几个输出的结果是对的但到了后面就是错的

http://cache.amobbs.com/bbs_upload782111/files_33/ourdev_585627GF86ZF.JPG
输出的结果 (原文件名:123.JPG)

mbbill 发表于 2010-9-25 22:59:58

usr_tab=usr_tab->next;
      ~~~~~~~~~~~~~~~

snail_z 发表于 2010-9-25 23:03:53

对了才怪,usr_tab=usr_tab->next;

ffxz 发表于 2010-9-26 06:24:19

如果阿莫能够更新下论坛,把代码的缩进也添加上就好了,没缩进的代码看起来很别扭。

gzhuli 发表于 2010-9-26 09:39:36

把TAB换成空格就有缩进了。
不过标准的做法是用< pre >标签把代码包起来就行了。

<pre>#include "stdio.h"
#include "malloc.h"
struct name_list
{
        char name;
        char sex;
        char age;
        struct name_list *next;
};
/*typedef struct name_list *usr_tab;*/
void main(void)
{
        char i=0;
        char *p;
        struct name_list *usr_tab;
        p=usr_tab=(struct name_list *)malloc(sizeof(struct name_list)*100);
        printf("\n\nlist sizeof:%d\n",sizeof(struct name_list));
       
        for(i=0;i<40;i++)
        {
                usr_tab->name=i;
                usr_tab->age=i;
                usr_tab->sex=i;
                usr_tab=usr_tab->next;
        }
       
        usr_tab=p;
        for(i=0;i<40;i++)
        {
                printf("No:%d name:%d age:%d sex:%d \n",i,usr_tab->name,usr_tab->age,usr_tab->sex);
                usr_tab=usr_tab->next;
        }
       
        printf("/*------------------------------------------*/\n");
        getch();

}</pre>

19001579 发表于 2010-9-26 09:41:47

回复【2楼】snail_z
-----------------------------------------------------------------------

usr_tab=usr_tab->next;
错在那里了,谢谢!

gzhuli 发表于 2010-9-26 09:43:41

回复【5楼】19001579
回复【2楼】snail_z
-----------------------------------------------------------------------
usr_tab=usr_tab->next;
错在那里了,谢谢!
-----------------------------------------------------------------------

你给next赋值了吗?

19001579 发表于 2010-9-26 09:50:46

也就是说链表不能先分配连续空间,在使用,只能一次分配一个记录的空间然后连接起来??

gzhuli 发表于 2010-9-26 10:07:04

改这样试试:
<pre>        for(i=0;i<40;i++)
        {
                usr_tab->name=i;
                usr_tab->age=i;
                usr_tab->sex=i;
                usr_tab->next=usr_tab+1;
                usr_tab=usr_tab->next;
        }</pre>
页: [1]
查看完整版本: struct结构的问题~!