如何计算数组元素数目?

name61 2008-03-02 12:06:07
下面是我的函数,编译后发现有问题:
template<> char* maxn<char*>(char* arr[], int n)
{
char* max = arr[0];
for (int i=1; i<n; i++)
{
if (sizeof(arr[i])>sizeof(max))//sizeof()???
max = arr[i];
}
return max;//返回数组的地址
}
...全文
136 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyuzhu_1984 2008-03-03
  • 打赏
  • 举报
回复
这个问题 我今天刚做了 用了个宏函数 很简单 写给你吧

#define size(a) sizeof(a)/sizeof(*(a))

a 是数组名字 具体的为什么 你可以看看c陷阱
name61 2008-03-03
  • 打赏
  • 举报
回复
谢谢,
包含cstring 后成立!
我以前就是将总将™搞混淆
billy1985 2008-03-02
  • 打赏
  • 举报
回复
sizeof(arr[i])有问题 sizeof是类型运算符
sizeof操作符以字节形式给出了其操作数的存储大小
想得到实际字符串的大小 建议调用strlen()这个库函数
name61 2008-03-02
  • 打赏
  • 举报
回复
要求得到 arr[] 中一个元素的字符串数目
Chappell 2008-03-02
  • 打赏
  • 举报
回复
貌似sizeof(arr[i])> sizeof(max)这句是不会成立的。
计算的都是指针的长度,都是4。
strlen才是返回长度。
ttkk_2007 2008-03-02
  • 打赏
  • 举报
回复
你要得到数组arr里,字符串最长的吗?换成strlen
nosafer 2008-03-02
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

template<class T>
int getLength(const T& x)
{
int length = sizeof(x)/ sizeof(int);

cout<<x[1]<<endl;
return length;
}

int main(void)
{
int a[5] = {1,2,3,4,5};

cout<<getLength(a);
return 0;
}


输出结果为 :
2
5
不晓得合你要求不?
www.mbsxx.cn上面有更多关于微软等的面试题和笔试题。
谢谢
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-02 12:06
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下