请看一下哪里写错了

来源:百度知道 编辑:UC知道 时间:2024/06/13 04:13:40
题目是:利用函数模板设计一个求数组元素总和的函数,并检验之.
自己写的输出的答案不对,纳闷,为了找错,在函数里输出数组的值,总是多出了15个元素,不知道和内存分配有没有关系,按这个思路修改了下还是不行.实在弄不懂了,请大家帮下忙.

#include <iostream>
using namespace std;
template <typename T>
T he(T s[]){
int len;T h(0);
for (len=0;s[len];len++) h+=s[len];
cout<<"len="<<len
<<endl;
return h;
}
void main(){
int s[]={1,2,3};
cout<<"he="<<he(s)
<<endl;
}
-
-
那么这段应该怎么修改呢,还有C++里面的"不等于"比较符是什么,C语言里面是"!=",谢谢
-
-
我知道是这个原因,可是实际上要改成什么呢
-
-
说了许多,我只想知道该改成什么..不会改..

你的for (len=0;s[len];len++) h+=s[len];有错,加入现在len==0的话,那么s[0]应该等于1,为真,然后len自加,加入len已经加到3的话,s[3]就已经越界了,只要它的值不为0,那么循环还会继续下去,知道碰到一个0为止。
很简单,你必须要传递一个数组的长度到模板函数中去,用来控制循环。C++来源于C,所有C中你使用过的东西,都可以直接在C++中使用。