C++ 如何使用C+;中的数组解决此问题+;?

C++ 如何使用C+;中的数组解决此问题+;?,c++,arrays,mean,visual-studio-2019,C++,Arrays,Mean,Visual Studio 2019,我正在进行Edabit挑战:获取给定数组的算术平均值。现在我有了这样的代码: #包括 int数据; 使用名称空间std; int平均值(int数据); int main() { int data[]={1,2,3,4}; cout你的均值函数是均值。 1.它不返回值;没有return语句。 2.它使用与函数相同的变量名(不是推荐的编码样式)。 3.在main内部有一个全局变量data被一个局部变量data隐藏 4.你把编译器和读者弄糊涂了:全局data变量是单个int,而main中的局部变量是i

我正在进行Edabit挑战:获取给定数组的算术平均值。现在我有了这样的代码:

#包括
int数据;
使用名称空间std;
int平均值(int数据);
int main()
{
int data[]={1,2,3,4};

cout你的
均值
函数是均值。
1.它不返回值;没有
return
语句。
2.它使用与函数相同的变量名(不是推荐的编码样式)。
3.在
main
内部有一个全局变量
data
被一个局部变量
data
隐藏
4.你把编译器和读者弄糊涂了:全局
data
变量是单个
int
,而
main
中的局部变量是
int
的数组

最后一行应该是:

return mean;

数组在作为参数传递给函数时衰减为指针(在本例中为
int*
)。您的
mean
函数只接受一个
int

当数组衰减为指针时,大小信息将丢失。但是,您可以通过定义一个函数来防止丢失,该函数接受所需的确切类型和大小的数组。这可以通过模板完成:

#include <iostream>

template<typename T, size_t N>
double mean(const T (&data)[N]) {
    double sum = 0;
    for (size_t i = 0; i < N; ++i)
    {
        sum += data[i];
    }
    return sum / N;
}

int main()
{
    int input[] = { 1, 2, 3, 4, 5, 6, 7 };
    std::cout << mean(input) << '\n';
}
#包括
模板
双平均值(常数和数据)[N]){
双和=0;
对于(尺寸i=0;istd::难道学习总是一个好主意吗。
int-mean(int-data)
的参数是一个整数,而不是数组。
sizeof
对数组参数不起作用(请参阅),你在
mean
@R Sahu中缺少了一个
return
。@R Sahu有在线教科书吗?从教科书中学习比从错误和小项目中学习更好吗?至于否决票:你的代码让人觉得你甚至没有读过教科书的相关章节或其他结构化的教学手册同样,如果你搜索错误信息,也可以在这个网站上找到很多答案。由于这些原因,“没有显示任何研究成果”投票失败的原因似乎是适用的,IMO因此不意味着取代一本好的教科书或教你。问题和答案也应该对其他读者有所帮助,请注意。然后强烈建议你停止浏览各种网站,开始阅读A。众所周知,大多数C++教程网站都是糟糕的。我怎么做int数组?我刚开始说我是初学者。你有一个int数组:
int数据[]={1,2,3,4};
。这里的变量是一个int数组。代码顶部的变量不是,而是同名的。区别是什么?数组和单变量之间的区别还是局部变量和全局变量之间的区别?请看单变量和数组之间的区别。
#include <iostream>
#include <iterator> // std::size

double mean(const int* data, size_t N)
{
    double sum = 0;
    for (size_t i = 0; i < N; ++i)
    {
        sum += data[i];
    }
    return sum / N;
}

int main()
{
    int input[] = { 1, 2, 3, 4, 5, 6, 7 };
    std::cout << mean(input, std::size(input)) << '\n';
}