CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

我写的一个程序,虽然可以运行,但是朋友说不规范,请各位帮忙看看!!!

楼主oicqliuyong(上帝是狗创造的)2006-11-07 10:09:25 在 C/C++ / C语言 提问

以下是我写的一个搜索链表里面值的程序:  
   
  #include   <stdio.h>  
  struct   a  
  {  
          int   zhi;  
          struct   a   *next;  
  };  
  int   main   (void)  
  {  
          int   a   =   0,   xy   =   0;  
          struct   a   n1,   n2,   n3;  
          struct   a   *kaishi   =   &n1;  
          struct   a   *hanshu   (struct   a   *kai,   int   shuru);  
          n1.zhi   =   100;  
          n1.next   =   &n2;  
          n2.zhi   =   200;  
          n2.next   =   &n3;  
          n3.zhi   =   300;  
          n3.next   =   (struct   a   *)   0;  
          printf   ("请输入您要搜索的值:");  
          scanf   ("%i",&a);  
          xy   =   hanshu   (kaishi,a);  
          if   (xy   ==   0)  
          {  
                  printf   ("没有找到您所输入的值!\n");  
          }  
          else  
          {  
                  printf   ("您要搜索的值为:%i\n",xy);  
          }  
          return   0;  
  }  
  hanshu   (struct   a   *kai,   int   shuru)  
  {  
          while   (kai   !=   (struct   a   *)0)  
          {  
                  if   (kai->zhi   ==   shuru)  
                  {  
                          return   kai->zhi;  
                  }  
                  else  
                  {  
                          kai   =   kai->next;  
                  }  
          }  
          return   0;  
  }  
   
  问题:  
          我在程序里面是用一个int类型的变量XY来接受函数hanshu返回的值。  
                int   a   =   0,   xy   =   0;  
                xy   =   hanshu   (kaishi,a);  
          虽然程序可以正常运行,但是我朋友说,因为函数返回的是一个指针return   kai->zhi  
          所以要用一个指针来接受这个函数的值。  
          请问??是我对,还是我朋友对?为什么??  
          偶对这一部分还不是很清楚,请大虾为我解释,解释,谢谢。 问题点数:50、回复次数:27Top

1 楼lann64(昆仑大鹏@迦楼罗)回复于 2006-11-07 10:14:16 得分 10

因为函数返回的是一个指针return   kai->zhi  
  函数返回的是一个int,不是指针。  
  不过hanshu   (struct   a   *kai,   int   shuru)定义前面的int返回类型说明应该写上。  
  Top

2 楼lann64(昆仑大鹏@迦楼罗)回复于 2006-11-07 10:15:24 得分 0

你朋友说的是错的。Top

3 楼oicqliuyong(上帝是狗创造的)回复于 2006-11-07 10:17:45 得分 0

就是说函数返回的是一个值???  
  但是明明是  
  return   kai->zhi  
   
  kai->zhi明明是一个指针啊!!!Top

4 楼goodluckyxl(被人遗忘的狗)回复于 2006-11-07 10:18:13 得分 14

是你朋友对  
  首先程序要保证逻辑清楚  
  返回地址对应使用地址存储,而不应该使用非地址变量存储  
  其次int类型是非标准类型随着平台不通而不同  
  地址是固定的,平台固定地址也就定了,32位地址总线的一般采用32位的地址  
  一旦使用某些编译器夏的int为16或者更小,那你如何保证正确Top

5 楼huangyangman(庸人自扰)回复于 2006-11-07 10:20:26 得分 0

return   kai->zhi  
  返回一个int   哪有指针?Top

6 楼jixingzhong(瞌睡虫·星辰)回复于 2006-11-07 10:21:11 得分 0

你的程序是对的Top

7 楼jixingzhong(瞌睡虫·星辰)回复于 2006-11-07 10:23:16 得分 20

struct   a  
  {  
          int   zhi;  
          struct   a   *next;  
  };  
   
  return   kai->zhi  
  返回   int   类型,   不是指针   ...  
   
  不过,  
  规范问题倒是有一点:  
  hanshu   (struct   a   *kai,   int   shuru)   {...}  
  ==》  
  int   hanshu   (struct   a   *kai,   int   shuru)   {...}  
  函数返回   默认   int   是旧标准采用的行为,  
  但是这样可能导致问题,   因为   C99   不支持这个属性了   ...Top

8 楼oicqliuyong(上帝是狗创造的)回复于 2006-11-07 10:59:06 得分 0

各位这样说我就有点了解了。  
   
  那能不能请各位帮我写出一个正确的,符合规范的呢??   谢谢Top

9 楼oicqliuyong(上帝是狗创造的)回复于 2006-11-07 11:02:51 得分 0

等等…………  
   
          我觉得把函数声明为int   hanshu   (struct   a   *kai,   int   shuru)这样就应该没有规范上的问题了吧,因为函数返回的是一个int型值,所以可以用int型的变量xy接受。  
          这样理解是可以的吧。Top

10 楼oicqliuyong(上帝是狗创造的)回复于 2006-11-07 11:03:59 得分 0

但是我朋友说,我这样做,是格式的强制转换………………搞的我有点糊涂了。明明逻辑上是对的啊,为什么说是格式强制转化的???Top

11 楼goodluckyxl(被人遗忘的狗)回复于 2006-11-07 11:05:35 得分 0

你朋友把你的返回的int看成了返回地址了  
  Top

12 楼huangyangman(庸人自扰)回复于 2006-11-07 11:12:16 得分 0

因为你朋友错了Top

13 楼aminconi(完美缺陷)回复于 2006-11-07 11:23:47 得分 1

struct   a{}和int   a   =   0不规范Top

14 楼oicqliuyong(上帝是狗创造的)回复于 2006-11-07 11:26:28 得分 0

int   a   =   0不规范,我是知道了,写程序时候疏忽了。  
   
  但是struct   a{}为什么不规范!!!Top

15 楼creamymami(尤文图斯)回复于 2006-11-07 11:31:51 得分 2

最大的不规范就是标识符全是拼音!Top

16 楼oicqliuyong(上帝是狗创造的)回复于 2006-11-07 11:32:54 得分 0

因为我喜欢人性化!!!Top

17 楼oicqliuyong(上帝是狗创造的)回复于 2006-11-07 11:33:30 得分 0

struct   a{}为什么不规范!!!  
  把这个问题解决了,我就给分了,拜托了各位大虾。Top

18 楼huangyangman(庸人自扰)回复于 2006-11-07 11:34:59 得分 1

何为规范?谁先给我讲讲   谢谢Top

19 楼creamymami(尤文图斯)回复于 2006-11-07 11:36:28 得分 1

声明和定义都应该是int   hanshu   (struct   a   *kai,   int   shuru)Top

20 楼oicqliuyong(上帝是狗创造的)回复于 2006-11-07 11:37:55 得分 0

creamymami(尤文图斯)    
  注意看帖子!!!  
   
  我觉得把函数声明为int   hanshu   (struct   a   *kai,   int   shuru)这样就应该没有规范上的问题了吧,因为函数返回的是一个int型值,所以可以用int型的变量xy接受。  
          这样理解是可以的吧。Top

21 楼oicqliuyong(上帝是狗创造的)回复于 2006-11-07 11:38:04 得分 0

算了,我给分了!!!Top

22 楼huangyangman(庸人自扰)回复于 2006-11-07 11:38:15 得分 1

creamymami(尤文图斯)  
  最大的不规范就是标识符全是拼音!  
  -------------------------  
  LZ确以"因为我喜欢人性化!!!"就给推脱掉了,  
  真搞不懂你还在那高喊如何规范的初衷!Top

23 楼qxbnit(蓝灵)回复于 2006-11-07 12:22:17 得分 0

------------------  
   
  oicqliuyong(上帝是狗创造的)  
   
  VS  
   
  goodluckyxl(被人遗忘的狗)  
   
  ------------------  
   
  两个人的名字蛮有趣的  
  Top

24 楼shisan107(拾叁)回复于 2006-11-07 13:16:57 得分 0

------------------  
   
  oicqliuyong(上帝是狗创造的)  
   
  VS  
   
  goodluckyxl(被人遗忘的狗)  
   
  ------------------  
   
  两个人的名字蛮有趣的  
   
   
  ========================  
  赞!Top

25 楼BKgHost(黑色幽灵)回复于 2006-11-07 13:30:11 得分 0

你这个东西干什么用?郁闷,很多人喜欢拿规范不规范来糊弄人,其实他自己也很不规范,毕竟写程序每个人都有自己的特点,不过你要把注释都写上就肯定很规范啦~Top

26 楼sujuan243()回复于 2006-11-07 14:16:09 得分 0

那个(struct   a*)0   是甚么意思我不明白Top

27 楼bohlee(我心澎湃)回复于 2006-11-07 15:23:46 得分 0

???Top

相关问题

关键词

得分解答快速导航

  • 帖主:oicqliuyong
  • lann64
  • goodluckyxl
  • jixingzhong
  • aminconi
  • creamymami
  • huangyangman
  • creamymami
  • huangyangman

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo