我尝试初始化数组时为什么会出错?

时间:2014-04-26 03:57:31

标签: c++ arrays

我想用n + 1个元素初始化一个数组,并为第一个元素赋值,所以:

  #include <iostream>

  using namespace std;

  double arry(int n,double s0);
  int main()
  {
    arry(10,24.543);
   return 0;
   }

  double arry(int n,double s0){
  double s[n+1]={};
  s[0]=s0;
   for(int i=0;i<11;i++){
    cout<<i<<"="<<s[i]<<endl;
      }
  }

似乎是对的,但是当我运行它时,我在第13行收到错误消息如下:

  

错误:可能无法初始化变量大小的对象

有人可以解决吗?非常感谢。

3 个答案:

答案 0 :(得分:0)

 double s[n+1]={};
C ++中不允许使用

s[n+1]。您应该使用编译时常量。比如,s[10];或,

#define INDEX 10
double s[INDEX + 1]={};

答案 1 :(得分:0)

使用此代码

#include <iostream>
#include <stdlib.h>

using namespace std;

void arry(int n,double s0);
int main()
{
    arry(10,24.543);
}

void arry(int n,double s0){
    double *s;
    s = new double[n + 1];
    s[0]=s0;
    for(int i=0;i<11;i++){
    cout<<i<<"="<<s[i]<<endl;
    }
}

答案 2 :(得分:-1)

必须使用malloc函数动态分配内存

#include <iostream>
#include <stdlib.h>

using namespace std;

double arry(int n,double s0);
int main()
{
    arry(10,24.543);
    return 0;
}

double arry(int n,double s0){
    double* s = (double*)malloc( sizeof(double) * (n + 1) ) ;
    s[0]=s0;
    for(int i=0;i<11;i++){
    cout<<i<<"="<<s[i]<<endl;
    }
}