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

法亚斯·穆罕默德

我在 header.h 中声明了一个结构

struct SPlayer
{
    int cardValue[11];
    int score;
    int bet;
    int flag;

};

我想初始化 cardValue 数组,并在一个单独的 .c 文件中将所有 11 个值设为 -1,该文件链接到 header.h。所以我在 .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.

请帮忙

来自莫斯科的弗拉德

如果对象玩家和经销商是该类型的对象,struct SPlayer那么你必须写

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

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

例如(在 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评论中指出的那样,在标题中定义对象不是一个好主意,因为如果标题将包含在多个模块中,您将违反一个定义规则。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C结构中的声明时初始化指针

头文件C ++中的声明和初始化太多

在声明时或在 TestInitialize 方法中初始化单元测试类成员?

声明时初始化变量的值

如何在结构声明中初始化位域?

在C中声明后如何初始化结构数组

声明时新的C ++ 11成员初始化功能是否使初始化列表过时了?

为什么不能在公共头文件中初始化静态类成员?

如何在C ++中初始化结构内部联合的结构成员?

当变量尚未在 python 中声明时初始化变量

是否应在声明时初始化Java变量?

在头文件中初始化常数本征矩阵

C 头文件中的全局变量初始化

为什么我应该在声明时初始化数据成员(在构造函数上不需要)?

如何在 C++ 中声明一个零初始化的类成员?

如何在类中声明和初始化静态成员?

如何初始化内联结构类型的指针成员?

如何确定头文件中C结构的成员?

在SWIG for Python中创建时如何初始化C结构成员?

如何在结构数组中初始化和动态分配int指针成员?

Go中的结构初始化和方法声明

如何在层次结构头文件中声明嵌套类型?

声明时无法使用初始化列表初始化const char * / string数组的向量

PLC-ST:如何在声明中初始化结构?

在类声明或构造函数初始化器列表中初始化简单成员

如何在Go结构中初始化成员

复制与未初始化的成员结构

constexpr结构成员初始化

声明/初始化私有嵌套结构的静态成员