';无法转换';浮动';至';浮动*';对于参数';1'; 我是一个信息技术专业的学生,学习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"); }
如果我这样调用函数';无法转换';浮动';至';浮动*';对于参数';1'; 我是一个信息技术专业的学生,学习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"); },c++,arrays,function,pointers,C++,Arrays,Function,Pointers,如果我这样调用函数 average(&vett[10],media); 它可以工作,但在数组中返回奇怪的值。 如你所见,我在函数中注释了同样的东西,它工作得很好,除非..我把它放在函数中。我假设我对函数调用做了一些错误,有人能帮我理解吗?方括号中的数字有两种含义: 在类似float-vett[10]的声明中它是数组的大小 不在声明中时,如average(&vett[10],media)表示数组的第十一个元素 平均值(&vett[10],中等)正在将第十一个元素的地址传递给函数。函数
average(&vett[10],media);
它可以工作,但在数组中返回奇怪的值。
如你所见,我在函数中注释了同样的东西,它工作得很好,除非..我把它放在函数中。我假设我对函数调用做了一些错误,有人能帮我理解吗?方括号中的数字有两种含义:
- 在类似
float-vett[10]的声明中代码>它是数组的大小
- 不在声明中时,如
average(&vett[10],media)代码>表示数组的第十一个元素
平均值(&vett[10],中等)代码>正在将第十一个元素的地址传递给函数。函数将其解释为数组的开头,这是错误的,在访问数组外部的元素时会导致未定义的行为
因为要传递整个数组,所以应该使用
average(vett,media);
方括号中的数字有两种含义:
- 在类似
float-vett[10]的声明中代码>它是数组的大小
- 不在声明中时,如
average(&vett[10],media)代码>表示数组的第十一个元素
平均值(&vett[10],中等)代码>正在将第十一个元素的地址传递给函数。函数将其解释为数组的开头,这是错误的,在访问数组外部的元素时会导致未定义的行为
因为要传递整个数组,所以应该使用
average(vett,media);
首先,请注意,main(void){
不是main
的有效签名
应该是:
int main(void){
然后:
这是无效的。数组索引从0开始,因此索引10超出范围,因为它需要大小为11的数组
另外,由于average
函数将浮点数组作为第一个参数,因此需要按如下方式传递:
average(vett,media);
使用:
average(&vett[10],media);
将传递一个指向数组后面的数据的指针,因此显然会得到垃圾值。首先,请注意main(void){
不是main
的有效签名
应该是:
int main(void){
然后:
这是无效的。数组索引从0开始,因此索引10超出范围,因为它需要大小为11的数组
另外,由于average
函数将浮点数组作为第一个参数,因此需要按如下方式传递:
average(vett,media);
使用:
average(&vett[10],media);
将传递一个指向数组后面的数据的指针,因此显然会得到垃圾值。
不要在C++中使用<代码> FUNC(无效)<代码>,它是某种被弃用的。使用<代码>函数()(代码)>
- 如果您有
float-vett[10];
,则vett[10]
无效。您只能使用vett[0..9]
float average(float数组[10],float&average)
实际上意味着
float average(float*array,float&average)
(第二种形式是声明指针参数的更常见的方式。)
如果您想用vett
作为参数调用它,只需使用average(vett,media)
当数组的名称用作指针时,会自动转换为指向数组第一个元素的指针。因此这里
average(vett,media);
vett
的意思是&vett[0]
不要在C++中使用<代码> FUNC(无效)<代码>,它是某种被弃用的。使用<代码>函数()(代码)>
- 如果您有
float-vett[10];
,则vett[10]
无效。您只能使用vett[0..9]
float average(float数组[10],float&average)
实际上意味着
float average(float*array,float&average)
(第二种形式是声明指针参数的更常见的方式。)
如果您想用vett
作为参数调用它,只需使用average(vett,media)
当数组的名称用作指针时,会自动转换为指向数组第一个元素的指针。因此这里
average(vett,media);
vett
的意思是&vett[0]
我将在帮助中添加更多内容
你的平均方法在结尾有两个返回语句。最后一个(你想要的那个)将永远无法到达,因为该方法将在第一个返回…我将在帮助中添加更多内容
平均方法的末尾有两个返回语句。最终的返回语句(您需要的返回语句)将永远无法到达,因为该方法将在函数中的第一个返回…,而不是此返回语句
float average(float array[10], float &average){
你必须这样说:
float average(float *array, float &average){
在函数中而不是此
float average(float array[10], float &average){
你必须这样说:
float average(float *array, float &average){
vett[10]=0;
这会访问数组边界之外的内存,不会执行您想要的操作。是否要对数组进行零初始化?在声明中使用float vett[10]={0}
。几天前我刚刚看到了类似的问题。返回数组[10];return average;
使用return
两次,您希望完成什么?vett[10]=0;
这会访问数组边界之外的内存,不会执行您想要的操作。是否要对数组进行零初始化?使用float vett[10]={0}
在声明中。几天前我刚刚看到了类似的问题。返回数组[10];return average;
两次使用return
你希望实现什么?10号表示数组中的第11个元素。不,这是一个很好的理由!在你编辑后删除了它。谢谢,我完全同意。我不太擅长玩“西部最快的枪”…10号表示第11个元素