c-用指针定义静态数组时出现编译错误



当我定义像这样的数组时

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 ) );

最新更新