C++ 写一个C++;函数,该函数接受一维数组并计算元素之和,然后显示该数组

C++ 写一个C++;函数,该函数接受一维数组并计算元素之和,然后显示该数组,c++,arrays,C++,Arrays,我想创建一个函数,该函数将定义一个一维数组,计算元素的和,并显示该和。我写了下面的代码,但是我不知道指针和其他高级编码技术的使用 #include <iostream> using namespace std; int main() { int size; int A[]; cout << "Enter an array: \n"; cin << A[size]; int sum; int sumofarrays(A[size]); sum =

我想创建一个函数,该函数将定义一个一维数组,计算元素的和,并显示该和。我写了下面的代码,但是我不知道指针和其他高级编码技术的使用

#include <iostream>

using namespace std;


int main()
{
int size;
int A[];

cout << "Enter an array: \n";
cin << A[size];

int sum;

int sumofarrays(A[size]);

sum = sumofarrays(A[size]);
cout << "The sum of the array values is: \n" << sum << "\n";
}


int sumofarrays(int A[size])
{
int i;
int j = 0;
int sum;
int B;

        for (i=0; i<size; i++)
                {
                        B  = j + A[i];
                        j = B;
                }

sum = B;
return(sum);
}
#包括
使用名称空间std;
int main()
{
整数大小;
INTA[];
cout如果您对数据使用了类似于
std::vector a
的容器,那么您的总和将下降为:

int sum=std::累加(A.begin(),A.end(),0);

每一个专业程序员都会在一瞬间明白你在做什么,这有助于使你的代码可读性和可维护性

<>使用C++标准库。读一本像Stroustrup这样的好书。< /P> < P>如果你使用了一个容器,比如<代码> STD::向量A < /COD>你的数据。那么你的总和就会下降为:

int sum=std::累加(A.begin(),A.end(),0);

每一个专业程序员都会在一瞬间明白你在做什么,这有助于使你的代码可读性和可维护性


开始使用C++标准库。读一本像Stroustrup这样的好书。< /P> < P>请选择拔示巴的答案——这是正确的。 1) 您需要了解堆栈上的数组(如“inta[3]”)和堆(如malloc或new分配的指针)之间的区别这里有一些细微差别,所以我不打算去讨论它,但是如果你想在C或C++中编程,即使最好的做法是尽量避免指针,只使用STL容器,这是非常重要的。 2) 我不会告诉你使用一种特定的缩进样式。但是请选择一种并保持一致。这种随意的方法会让其他程序员发疯;)同样,大小写也是如此

3) 变量名应该总是有意义的(除了可能是毫无意义的循环计数器,对于循环计数器,“i”似乎是标准的)。没有人会看到你的代码,立即知道“j”或“B”应该是什么意思

4) 实现的算法只需要这些变量的一半。使用所有这些临时变量没有意义。只需将sum声明为“int sum=0”;然后在循环中执行“sum+=A[i];”

5) 与过去不可能的情况不同,最佳实践是只在需要使用变量的地方声明变量,而不是事先声明。因此,例如,在循环之前不需要声明B或j(如前所述,实际上并不需要),只需在循环内声明它们,如“int B=j+A[i];”和“int j=B;”。或者更好的说法是“const int”,因为没有任何东西可以改变它们。但最好的办法是,如第4章所述,根本不要使用它们,只使用sum——你真正关心的唯一变量;)

这同样适用于for循环-您应该在循环内声明i(“for(inti=…”),而不是在循环外声明i,除非您需要查看循环完成后在何处爆发(在您的示例中不可能)

6) 虽然在这里没有任何区别,但您可能应该养成在for循环中使用“++i”而不是“i++”的习惯。这实际上只对类有影响,而不是像整数这样的基类型,但是前缀增量的算法通常比后缀增量快一点

7) 你知道你给sumOfArrays打了两次电话吧

int sum;

int sumofarrays(A[size]);

sum = sumofarrays(A[size]);
你真正的意思是:

const int sum = sumofarrays(A);
或者,您完全可以跳过将其分配给变量,而只是在您的计算机内调用它。目标是尽可能少地使用代码而不会造成混乱。因为过多不需要的代码只会增加甩掉某人或包含未检测到错误的几率

只是不要走得太远,制造一个巨大的混乱,或者试图用一行“技巧”来表现得太“聪明”,当他们第一次看到这些技巧时,没有人会理解它们

8) 我个人建议——在这个阶段——避免像瘟疫一样“使用”调用。每次都必须显式地调用“std::…”,这对您了解stl的一部分是很重要的。此外,如果您编写过其他人可能使用的.h文件,您不想(出于习惯)用“使用”来污染它们会对其他人的代码产生影响的调用


你是个初学者,没关系-你会学到的!:)

请选择芭丝谢芭的答案-这是正确的答案。也就是说,除了我上面的评论,我还想给你一些提示:

1) 您需要了解堆栈上的数组(如“inta[3]”)和堆(如malloc或new分配的指针)之间的区别这里有一些细微差别,所以我不打算去讨论它,但是如果你想在C或C++中编程,即使最好的做法是尽量避免指针,只使用STL容器,这是非常重要的。 2) 我不会告诉你使用一种特定的缩进样式。但是请选择一种并保持一致。这种随意的方法会让其他程序员发疯;)同样,大小写也是如此

3) 变量名应该总是有意义的(除了可能是毫无意义的循环计数器,对于循环计数器,“i”似乎是标准的)。没有人会看到你的代码,立即知道“j”或“B”应该是什么意思

4) 实现的算法只需要这些变量的一半。使用所有这些临时变量没有意义。只需将sum声明为“int sum=0”;然后在循环中执行“sum+=A[i];”

5) 最佳实践是——不像过去那样不可能——只在需要使用变量的地方声明变量,而不是事先声明