C中的常量整数和数组初始化

时间:2018-04-11 02:35:10

标签: c arrays constants

我有这个表达:

const int numPlayers = 2;
player players[numPlayers];

这是一组用户定义的类型播放器(使用struct)。但是,我收到一条错误消息,指出numPlayers必须是常量值。

expression must have a constant value

我做错了什么?

我也像这样初始化了数组:

player *players = (player*)calloc(sizeof(player), numPlayers);

但是如果没有程序崩溃,我无法访问结构的任何局部变量。

2 个答案:

答案 0 :(得分:2)

在C99中,下面的函数内部工作正常。它是可变长度数组(VLA)。

const int numPlayers = 2;
player players[numPlayers];

否则使用#define作为真正的常量

#define numPlayers 2
player players[numPlayers];

答案 1 :(得分:1)

const不是真正的常量,编译器不允许您仅更改值。我建议改为使用#define numPlayers 2