用指针定义静态数组的编译错误
Compilation error for defining static array with pointers
当我定义一个数组时
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 ) );
当我定义一个数组时
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 ) );