这是我的代码,我有问题[链接器错误]未定义引用`Suma(int,int)'
#include<iostream>
#include<conio.h>
using namespace std;
int Suma(int,int);
int main()
{
int n,x[1],i;
cout<<"Numero de elementos del arreglo?: ";
cin>>n;
for(i==0;i<n;i++)
{
cout<<"elemento "<<i+1<<": ";
cin>>x[i];
}
cout<<"La suma de los elementos es: "<<Suma(n,x[1])<<endl;
cout<<"<<El programa ah finalizado: codigo de salida: 0>>\n";
cout<<"<<Presione enter para cerrar la ventana...>>";
getch();
}
int Suma(int n, int x[])
{
if(n==1) return x[1];
return x[n-1]+Suma(n-1,x);
}
如果我为Suma(n,x[1])
更改此部分Suma(n,x)
,则新错误是“从int *'到int'的无效转换”我不知道问题是什么,结果应该是:
enter image description here
答案 0 :(得分:1)
错误的简要说明: -
Suma()
内的数组的类型转换失败了。您接受int x并尝试索引x不正确。 明细 -
以上代码有以下错误,
声明= int Suma(int, int)
。
定义= int Suma(int n, int x[])
。
Suma函数中的代码=&gt; if(n==1) return x[1]; return x[n-1]+Suma(n-1,x);
来自main()=&gt;的来电者cout<<"La suma de los elementos es: "<<Suma(n,x[1])<<endl;
看看以上几行。声明Suma函数,因为它接受两个整数。然而,在定义它接受一个数组。在函数定义之前调用Suma函数。所以现在它的upto编译器抛出错误。有些人可能会抱怨声明中存在不匹配,有些人可能会抛出一个错误,指出未声明/找不到的函数。
调用者的另一个问题是,调用者传递x [1]要么传递整数而不是数组。
从上面的所有内容看起来你想传递一个数组 - 所以
int Suma(int n, int x[])
。所以现在编译器会匹配,因此链接器也应该找到声明的函数体,因此没有错误。 Suma(n, x)
。 cout<<"La suma de los elementos es: "<<Suma(n,x)<<endl;
这应该有用。
答案 1 :(得分:0)
你的功能原型如下:
int Suma(int,int);
但是这样实现:
int Suma(int n, int x[])
int
和int[]
不一样。然后在代码中执行此操作:
Suma(n,x[1])
匹配第一个声明。选择一个原型然后实现它。