【发布时间】:2015-02-02 16:52:17
【问题描述】:
我是一名 ICT 学生,正在学习 C++,我觉得这很有趣。但是,在进行实验时,我想出了一些我自己无法解决的问题,也无法在网上找到。 这是代码:
#include <iostream>
using namespace std;
float average(float array[10], float &average){
int i = 0;
for( i = 0; i != 10; i++ ){
cout << "Vett ("<<i<<") = ";
cin >> array[i];
while(cin.fail())
{
cin.clear();
cin.ignore();
system("Color 5C");
cout << "\nPlease insert a number: ";
cin >> array[i];
}
average = average + array[i];
}
average = average / 10;
return array[10];
return average;
}
main(void){
float vett[10], media;
int i;
char loop;
vett[10] = 0;
media = 0;
do{
system("cls");
system("Color 00");
cout<<"****************************************"<<endl;
cout<<"*** INSER THE DATA TO COMPUTE ***"<<endl;
cout<<"****************************************\n"<<endl;
/* for( i = 0; i != 10; i++ ){
cout << "Vett ("<<i<<") = ";
cin >> vett[i];
while(cin.fail())
{
cin.clear();
cin.ignore();
system("Color 5C");
cout << "\nPlease insert a number: ";
cin >> vett[i];
}
media = media + vett[i];
}
media = media / 10;
*/
average(vett[10],media);
for( i = 0; i != 10; i++ ){
cout << vett[i]<<" ";
}
if(media == 0){
cout << "\nATTENTION the average equals to = "<<media<<endl;
}
else{
cout << "\nThe average is"<<media<<endl;
}
printf("\n");
cout << "\nDo You want to continue? Y/N";
cin >> loop;
}
while(loop == 'Y' || loop == 'y');
system("pause");
}
由于某种原因,我无法在“平均”函数中将数组设置为指针 (&array),可能是因为数组已经是一个指针。尽管如此,删除它会给我以下错误:
"Cannot convert 'float' to 'float*' for argument '1' to 'float average(float*,float&)'
如果我这样调用函数
average(&vett[10],media);
它可以工作,但会在数组中返回奇怪的值。 如您所见,我评论了我在函数中放入的相同内容,它完美运行,除非..我将它放入函数中。我假设我在函数调用中做错了什么,有人可以帮助我理解吗?
【问题讨论】:
-
vett[10] = 0;这会访问数组边界之外的内存并且不会执行您想要的操作。你想零初始化数组吗?在声明中使用float vett[10] = {0}。 -
前几天刚看到同样的问题。
-
return array[10]; return average;你希望通过两次使用return来完成什么?
标签: c++ arrays function pointers