免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 5234 | 回复: 35
打印 上一主题 下一主题

关于 C 的一小段代码,向各位求教了!谢谢~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-20 15:59 |只看该作者 |倒序浏览
  1.             
  2.             #include "stdlib.h"
  3.             #include "alloc.h"
  4.             #include "stdio.h"
  5.             #include "string.h"

  6.             struct address
  7.             {
  8.                 char name[30];
  9.                 char street[40];
  10.                 char city[20];
  11.                 char state[10];
  12.                 char zip[6];
  13.                 struct address *next;
  14.             }list_entry;

  15.             void inputs(char *,char *,int);
  16.             void dls_store(struct address*);

  17.             main()
  18.             {
  19.                 struct address *info;
  20.                 int i;
  21.                 for(i=0;i<5;i++)
  22.                 {
  23.                     info=(struct address *)malloc(sizeof(list_entry));
  24.                     inputs("enter name:",info->name,30);
  25.                     inputs("enter street:",info->street,40);
  26.                     inputs("enter city:",info->city,20);
  27.                     inputs("enter state:",info->state,10);
  28.                     inputs("enter zip:",info->zip,6);
  29.                     dls_store(info);
  30.                 }
  31.             }

  32.             void inputs(char *prompt,char *s,int count)
  33.             {
  34.                 char p[255];
  35.                 do
  36.                 {
  37.                     printf(prompt);
  38.                     gets(p);
  39.                     if(strlen(p)>count) printf("\n too long \n");
  40.                 }
  41.                 while(strlen(p)>count);
  42.                 strcpy(s,p);
  43.             }

  44.             void dls_store(struct address *in)
  45.             {
  46.                 static struct address *last=NULL;
  47.                 if(!last) last=in;
  48.                 else last->next=in;
  49.                 in->next=NULL;
  50.                 last=in;
  51.             }
复制代码


================================
不明白的在 dls_store()这个函数,
它怎么实现 next 这玩意?
还有这next具体是怎么个指向法,
望大侠们指教

论坛徽章:
0
2 [报告]
发表于 2007-03-20 16:07 |只看该作者
这段代码怎么了???

哦,我明白了

“楼主的代码写的太好了!!而且是C的!!!厉害厉害!!!!!!!!”

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
3 [报告]
发表于 2007-03-20 16:12 |只看该作者
难道不需要释放malloc分配的内存吗?用局部静态变量来保存.
指向first还可认为是stack,指向last就无语了.
如何找回以前的结点?

论坛徽章:
0
4 [报告]
发表于 2007-03-20 16:14 |只看该作者
原帖由 cobras 于 2007-3-20 16:12 发表
难道不需要释放malloc分配的内存吗?用局部静态变量来保存.
指向first还可认为是stack,指向last就无语了.
如何找回以前的结点?

艾,我太浮躁了,现在

一看没有说要干什么,连代码都没看


惭愧,惭愧

论坛徽章:
0
5 [报告]
发表于 2007-03-20 16:18 |只看该作者
不明白你在指什麽...

论坛徽章:
0
6 [报告]
发表于 2007-03-20 16:20 |只看该作者
static 變量哈....

论坛徽章:
0
7 [报告]
发表于 2007-03-20 16:23 |只看该作者
多谢各位的帮助
能不能把下面这几行给我加个注释,谢谢

void dls_store(struct address *in)
            {
                static struct address *last=NULL;
                if(!last) last=in;
                else last->next=in;
                in->next=NULL;
                last=in;
            }

论坛徽章:
0
8 [报告]
发表于 2007-03-20 16:26 |只看该作者
void dls_store(struct address *in)
            {
                static struct address *last=NULL; //static 變量 只被定義一次 以後只要執行期就一直出現 呃 在本文件内可見 所以你的疑問不成疑問  其他的應該都很簡單的
                if(!last) last=in;
                else last->next=in;
                in->next=NULL;
                last=in;
            }

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
9 [报告]
发表于 2007-03-20 16:26 |只看该作者
错误的代码还加什么注释,不是误人子弟嘛

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2007-03-20 16:28 |只看该作者
原帖由 cobras 于 2007-3-20 16:26 发表
错误的代码还加什么注释,不是误人子弟嘛

瞎嚷嚷什么?
人家的代码好好的嘛。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP