当我定义像这样的数组时
double *first = (double *)malloc( N*N*sizeof( double ) );
没有问题。但当我指定时
static double *first = (double *)malloc( N*N*sizeof( double ) );
我收到这个错误
error: initializer element is not constant
10 | static double *first = (double *)malloc( N*N*sizeof( double ) );
| ^
我该怎么解决?
您可以使用常量表达式初始化具有静态存储持续时间的对象。调用malloc的表达式不是常量表达式。
因此,例如,您需要将指针初始化为空指针,例如
static double*first=NULL;
然后调用函数中的函数malloc
if ( first == NULL ) first = (double *)malloc( N*N*sizeof( double ) );