注册 登录
编程论坛 C++教室

求元素个数

我很恨你 发布于 2013-04-14 16:11, 364 次点击
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    int values[]={1,2,0,5,4,6,9,8,7,3};
    int len=sizeof(values);
    int i;
    for(i=0;i<10;i++)
        cout<<setw(3)<<values[i];
    cout<<endl<<endl;
    cout<<len<<endl;
}
这是程序的一部分,但是求得的元素个数不对,请问是怎么回事
2 回复
#2
邓士林2013-04-14 16:46
因为你的数组是int型的,然后有10个元素,一个int占四个字节,所以四十个。这样就对了int len=sizeof(values)/sizeof(int);

[ 本帖最后由 邓士林 于 2013-4-14 16:49 编辑 ]
#3
邓士林2013-04-14 16:51
你看看这个:
Sizeof与Strlen的区别与联系(转)1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。sizeof还可以用函数做参数,比如: short f();printf("%d\n", sizeof(f()));输出的结果是sizeof(short),即2。 4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。
1