C++ 这个错误是什么意思:在任何函数之外声明变量大小类型

C++ 这个错误是什么意思:在任何函数之外声明变量大小类型,c++,arrays,C++,Arrays,我有一个名为fx的函数,fx,有两个作为数组和双精度的输入变量,所以我像这样编写程序,我面临以下错误。问题在于输入数组的定义,但我不知道如何解决它。 另一个问题是,当我想用输入调用这个fx函数时,我如何才能给出一个完整的数组作为第一个输入变量-fx(matris[n],x) 代码: #包括 使用名称空间std; int n=1; 双y=1; 双x; 双fx(双矩阵[],双x){ 双f=0; 对于(int i=0;i,由于传递给函数的数组实际上没有大小(变量或其他),编译器会向您传递变量n,作为m

我有一个名为fx的函数,
fx
,有两个作为数组和双精度的输入变量,所以我像这样编写程序,我面临以下错误。问题在于输入数组的定义,但我不知道如何解决它。 另一个问题是,当我想用输入调用这个
fx
函数时,我如何才能给出一个完整的数组作为第一个输入变量-
fx(matris[n],x)

代码:

#包括
使用名称空间std;
int n=1;
双y=1;
双x;
双fx(双矩阵[],双x){
双f=0;

对于(int i=0;i,由于传递给函数的数组实际上没有大小(变量或其他),编译器会向您传递变量
n
,作为
matris
的大小

只需从
双矩阵[n]
表达式中删除
n
,将方括号留空即可


< C++ > C++ C++ 14将引入这样的概念,但对于现有的C++标准,它是不允许的——只有GNU C++和一些“GNU C++兼容的编译器”支持这个构造。<第一个问题得到解决:D,但是现在我有一个错误:返回FX(Timp[n],x);as:不能将参数<代码> double /代码> double *'用于参数<代码> 1”到双fx(double *,double),只使用<代码>返回fx(TEMP,x);< /C> >,但是考虑升级函数以数组大小作为参数:<代码>双fx(int n,双矩阵[],double x)
。全局变量,如
n
是讨厌的!同样,你不能传递一个“特定大小”的数组,你只需传递整个数组-
fx(temp,x)
;如果这解决了问题,您应该接受这个答案。这是堆栈溢出方式。实际上,您根本无法将数组传递给函数。如果您声明数组类型的参数,它将调整为指向元素类型的指针。这:
void func(int array[42]);
的真正意思是:
void func(int*array);
(事实上,
42
被默默地忽略了,这是C和C++最糟糕的特性之一)。您似乎编辑了您的代码,以便根据答案对其进行“修复”。请不要这样做。这会让将来发现此问题的人感到非常困惑。相反,请在保留原始代码的同时,用有关修复的注释修改您的帖子,或添加代码的更正副本。
error : variable-size type declared outside of any function
#include<iostream>
using namespace std;
int n=1;
double y=1;
double x;
double fx(double matris[], double x){
double f = 0;
for(int i=0;i<n;i++)//e.g f(X)= 3x^2 + 2x -4 = 0 [3 2 -4]
{
        y = 1;
        for(int k = 0;k<n-i-1;k++){//temp: y = x*x*x or x*x or x ... (calcules powers)
        y = y*x;
        }       
        f = f+y*matris[i];// 3 * y((x*x)) + 2 * y((x)) +  -4* y(1)
}
return f;
}
double dif(double matris[], double x){
double temp[n];
temp[0] = 0;
for (int i=0;i<n;i++){
temp [i+1] = matris[i] * (n-i-1);
}
return fx(temp[n], x);
}
int main(){
//newton-raphson method to solve a equilibrium
cout << "please enter the degree of your equilibrium: ";
cin >> n;
double matris[n];
cout << "please enter your equlibruim array: ";
for(int i =0; i<n; i++)
cin >> matris[i];

//x = x0 - f(x)/f'(x);
x = 1;
fx(matris,x);

return 0;
}