Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;获取数组中的数据数?_C++_Arrays - Fatal编程技术网

C++ C++;获取数组中的数据数?

C++ C++;获取数组中的数据数?,c++,arrays,C++,Arrays,我这里有一个简单的数组: int someNumbers[10] = { 16, 2, 77, 40, 12071 }; 如何获取阵列中的数据数?因为数组被设置为10,但是里面只有5个数据 我期望的结果应该是这样的: int icount = sizeof(someNumbers); // This is wrong, but I have no idea how.. cout << icount << endl; #include<iostream>

我这里有一个简单的数组:

int someNumbers[10] = { 16, 2, 77, 40, 12071 };
如何获取阵列中的数据数?因为数组被设置为10,但是里面只有5个数据

我期望的结果应该是这样的:

int icount = sizeof(someNumbers); // This is wrong, but I have no idea how..
cout << icount << endl;
#include<iostream>

using namespace std;

int dataInArray(int someNumbers[], int size);

int main(){
  int someNumbers[10] = { 16, 2, 77, 40, 12071, 2};
    int count = dataInArray(someNumbers, 10);
    cout << count << endl;
  return 0;
}

int dataInArray(int someNumbers[], int size){
    int count = 0;
    int i = 0;
    for(i = 0; i < size; i++){
        if(someNumbers[i]){
            count = count + 1;
        }
    }
    return count;
}
int-icount=sizeof(someNumbers);//这是错误的,但我不知道如何。。
不能使用这个:

int someNumbers[] = { 16, 2, 77, 40, 12071 };
cout << sizeof(someNumbers)/sizeof(int) <<endl;
int someNumbers[]={16,2,77,40,12071};
cout这应该可以做到:

int someNumbers[] = {1,2,3,4,5,6};
int icount = sizeof(someNumbers) / sizeof(int);

由于您使用的是预定义大小的静态数组,因此必须使用
for
循环在数组中运行。请参见此处的示例:

int someNumbers[10] = { 16, 2, 77, 40, 12071 };
int icount = 0;
for (int i = 0; i < 10; i++)
{
    if (someNumbers[i])
        icount++;
}

cout << icount << endl;
int someNumbers[10]={16,2,77,4012071};
int-icount=0;
对于(int i=0;i<10;i++)
{
if(某些数字[i])
icount++;
}
cout这样做可以:

#include<iostream>

using namespace std;

int main(){
    int someNumbers[10] = { 16, 2, 77, 40, 12071 };
    int count = 0;
    int i = 0;
    for(i = 0; i < sizeof(someNumbers) / sizeof(int); i++){
        if(someNumbers[i]){
            count = count + 1;
        }
    }

    cout << count << endl;

    return 0;
}
您可以将其作为单独的函数,如下所示:

int icount = sizeof(someNumbers); // This is wrong, but I have no idea how..
cout << icount << endl;
#include<iostream>

using namespace std;

int dataInArray(int someNumbers[], int size);

int main(){
  int someNumbers[10] = { 16, 2, 77, 40, 12071, 2};
    int count = dataInArray(someNumbers, 10);
    cout << count << endl;
  return 0;
}

int dataInArray(int someNumbers[], int size){
    int count = 0;
    int i = 0;
    for(i = 0; i < size; i++){
        if(someNumbers[i]){
            count = count + 1;
        }
    }
    return count;
}
#包括
使用名称空间std;
int-dataInArray(int-someNumbers[],int-size);
int main(){
int someNumbers[10]={16,2,77,40,12071,2};
int count=dataInArray(一些数字,10);

cout你所要求的是不可能的,因为根据语言规则,以下两者之间根本没有区别:

int someNumbers[10] = { 16, 2, 77, 40, 12071 };

它们两个都会初始化所有十个元素

如果您对查找第一个零感兴趣(无论它是由程序员键入的还是由语言规则暗示的),那么@ABusyProgrammer的答案将有所帮助

如果需要计算程序员键入的零,那么必须让编译器从初始值设定项推断数组(或初始值设定项列表,如注释中所述)长度,如@Kelm的答案所示



既无法检测程序员键入的零,也无法指定数组大小。

不是问题所要求的。数组是静态大小,它仍然会返回
10
,而不是OP想要的,
5
@Kelm抱歉。我已将其包含在ideone链接中,但未包含在答案中。抱歉,这不是问题的答案很好的回答为什么不@H.DJEMAI,我可以问一下吗?这个初始数组怎么样:如果你有{16,2,77,0,40,12071}谢谢指点一下,@ H.DjeMaI,只是修正了。也考虑到C中的数组不是为你自动填充的。在你自己分配一些值之前,数组的内容可以是任何东西。这看起来很简单,但是我想知道在创建数组时不定义数组的大小是否是一个好的实践?okee请再次查看您的问题。@Pokee它是由初始化列表中的元素数定义的。该初始化相当于
int someNumbers[6]={1,2,3,4,5,6}
介意解释-1吗?这并不能回答OP的确切问题。虽然OP已经接受它作为一种解决方案,但请记住,您在这里发布的是整个社区,而不仅仅是询问者。此外,最好是您回答确切的问题,然后提出更好的替代方案。只有在没有直接联系的情况下,才首选替代方案这个问题的解决方法,这里有一个。你有没有考虑过这个问题[10 ] = { 16, 2, 77,40,120,1,10,0,0,0,7}。;谢谢你指出!对if进行简单的编辑就可以了。编辑答案…这不起作用。当计数器上的数组为空时,你将递增计数器。这将返回数组中有多少空格,而不是有多少空格。实际上,我明白你的意思。数组中未定义的数字设置为0以填充。您建议如何解决此问题?请参阅我的答案。它只是将比较运算符从==更改为!=。