新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论高级C/C++编程、代码重构(Refactoring)、极限编程(XP)、泛型编程等话题
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 C/C++编程思想 』 → 求数组长度 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 10085 个阅读者  浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 求数组长度 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     fangel2000 帅哥哟,离线,有人找我吗?
      
      
      头衔:w3china第一水王
      等级:大四寒假(收到Microsoft的Offer啦)
      文章:283
      积分:1503
      门派:W3CHINA.ORG
      注册:2006/5/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给fangel2000发送一个短消息 把fangel2000加入好友 查看fangel2000的个人资料 搜索fangel2000在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看fangel2000的博客楼主
    发贴心情 求数组长度

    我想在一个函数中求一个数组的长度

    void  testPalindrome(char s[])
    {
    int length = 0;
    while (s[length])
        length++;
    cout<<length<<endl;
    }

    为什么这样的代码不可以呢,不行的话那应该怎样写呢?


       收藏   分享  
    顶(0)
      





    关闭广告显示
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/22 22:39:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客2
    发贴心情 
    上面应该去掉s[length]=="/0"的情况。
    可以直接这么写:

    int length(int s[])
    {
        return sizeof(s[])/sizeof(s[0]);
    }

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/23 9:06:00
     
     fangel2000 帅哥哟,离线,有人找我吗?
      
      
      头衔:w3china第一水王
      等级:大四寒假(收到Microsoft的Offer啦)
      文章:283
      积分:1503
      门派:W3CHINA.ORG
      注册:2006/5/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给fangel2000发送一个短消息 把fangel2000加入好友 查看fangel2000的个人资料 搜索fangel2000在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看fangel2000的博客3
    发贴心情 
    哦,谢谢了
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/23 10:06:00
     
     flyhigher 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:23
      积分:160
      门派:XML.ORG.CN
      注册:2006/10/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flyhigher发送一个短消息 把flyhigher加入好友 查看flyhigher的个人资料 搜索flyhigher在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flyhigher的博客4
    发贴心情 
    int length(int s[])
    {
        return sizeof(s[])/sizeof(s[0]);
    }
    这样好行不行吧。
    不知道这位大虾用的什么编译器,反正 vc好像编译不通过。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/9 18:46:00
     
     longshentailang 帅哥哟,离线,有人找我吗?
      
      
      威望:1
      等级:计算机学士学位
      文章:325
      积分:2990
      门派:XML.ORG.CN
      注册:2006/6/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给longshentailang发送一个短消息 把longshentailang加入好友 查看longshentailang的个人资料 搜索longshentailang在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看longshentailang的博客5
    发贴心情 
    return sizeof(s[])/sizeof(s[0]);

    应该改为

    return sizeof(s)/sizeof(s[0]);
    而且这样改的话,算出的也不是数组的长度。

    因为在函数中,数组参数退化为指针,而指针的大小为4个字节。比如下面的内容永远输出为4

    void fun(char  a[1000])
    {
       count<<sizeof(a)<<endl;  //输出4而不是1000
    }

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/9 21:17:00
     
     longshentailang 帅哥哟,离线,有人找我吗?
      
      
      威望:1
      等级:计算机学士学位
      文章:325
      积分:2990
      门派:XML.ORG.CN
      注册:2006/6/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给longshentailang发送一个短消息 把longshentailang加入好友 查看longshentailang的个人资料 搜索longshentailang在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看longshentailang的博客6
    发贴心情 
    我不知道你那段代码具体出了什么错,但我测试的时候你那个函数是对的。你是否可以贴一下你的完整代码?

    我的测试用例如下:(测试环境:VC++ 6.0 和 Dev-C++ 4.9.9.2)

    #include <iostream>

    using namespace std;

    void testPalindrome(char s[])
    {
     int length = 0;
     while (s[length])
      length++;
     cout<<length<<endl;

    }

    int main(void)
    {
     char a[] = "Hello00000";
     testPalindrome(a);
    }

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/9 21:23:00
     
     fangel2000 帅哥哟,离线,有人找我吗?
      
      
      头衔:w3china第一水王
      等级:大四寒假(收到Microsoft的Offer啦)
      文章:283
      积分:1503
      门派:W3CHINA.ORG
      注册:2006/5/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给fangel2000发送一个短消息 把fangel2000加入好友 查看fangel2000的个人资料 搜索fangel2000在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看fangel2000的博客7
    发贴心情 
    呵呵,这个算法我刚也验证过了,是正确的,
    但是很迷惑的是上次出错了,我也不知道出现什么问题了.呵呵
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/10 17:35:00
     
     flyhigher 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:23
      积分:160
      门派:XML.ORG.CN
      注册:2006/10/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flyhigher发送一个短消息 把flyhigher加入好友 查看flyhigher的个人资料 搜索flyhigher在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flyhigher的博客8
    发贴心情 
    我觉得关键是实参的最后一个有效字符之后是否有'\0'
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/10 17:42:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 C/C++编程思想 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/7/16 14:39:47

    本主题贴数8,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms