在头文件中声明时如何初始化结构的成员?

How to initialise the members of a structure when it's declared in a header file?

我在header.h

中声明了一个结构
struct SPlayer
{
    int cardValue[11];
    int score;
    int bet;
    int flag;

};

我想初始化 cardValue 数组并在它链接到 header.h 的单独 .c 文件中将所有 11 个值设为 -1。所以我在 .c 文件中尝试了这个。玩家和庄家对象在 header.h

中声明
    for (int i = 0; i < 11; i++)
    {
        player->cardValue[i] = -1;
        dealer->cardValue[i] = -1;
    }

但是,我收到以下错误:

Exception thrown: write access violation.
_player was 0x1110112.

请帮忙

如果 objects 玩家和庄家是 objects 类型 struct SPlayer 那么你必须写

for (int i = 0; i < 11; i++)
{
    player.cardValue[i] = -1;
    dealer.cardValue[i] = -1;
}

如果它们具有指针类型 struct SPlayer *,那么您需要分配(例如动态地)指针将指向的类型 struct SPlayer 对应的 objects。

例如(在 C 中)

struct SPlayer *player = malloc( sizeof( struct SPlayer ) );
struct SPlayer *dealer = malloc( sizeof( struct SPlayer ) );

或者在 C++ 中,您应该使用运算符 new。

在检查指针不是空指针后,您可以使用循环

for (int i = 0; i < 11; i++)
{
    player->cardValue[i] = -1;
    dealer->cardValue[i] = -1;
}

注意 John Bollinger 在评论中指出的,在 header 中定义 objects 不是一个好主意,因为如果 header 将是包含在多个模块中你将打破一个定义规则。