如何编写一个用户可以输入的可变大小的数组[变量]?

时间:2015-05-09 11:25:44

标签: c arrays

我试图编写一个读取多项式的程序。 我在Visual Studio 10中使用C(在工作中)/ 13(在家中)

代码:

void getPolynomial()
{
    int number;//Quantity of the polynomial
    number = getInt(1, 10);
        //getInt(min, max) Read a number from the user 
        //and return an int value between min and max
    double poly[] = poly[number];
        //I try to fix this line. 
        //It should create an array with as many fields,
        //as the user wants to have.
}

给出

  

错误C2075:' poly' :数组初始化需要大括号

如果我尝试:

double poly[number];

我明白了:

  

错误C2057:预期的常量表达式

     

错误C2466:无法分配常量大小为0的数组

     

错误C2133:' poly' :未知大小

这是解决方案,特别感谢CoolGuy

#include<stdlib.h>

void getPolynomial()
{
    int number;
    double *poly;
    number = getInt(1, 10);
    poly = malloc(number * sizeof(*poly));
    // use array poly[]
    free(poly);
}

1 个答案:

答案 0 :(得分:0)

double poly[] = poly[number];

无效C.您必须使用

double poly[number];

如果您的编译器支持C99。上面的行创建了一个VLA(可变长度数组),这是在C99中引入的。 AFAIK,VS 2010不支持C99,但VS 2013支持。

如果这不起作用,则必须使用malloc / calloc动态分配内存:

double *poly;
poly = malloc(number * sizeof(*poly)); //sizeof(*poly)==sizeof(double)

//After poly's use,

free(poly);