在头文件中声明时如何初始化结构的成员?
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 将是包含在多个模块中你将打破一个定义规则。
我在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 将是包含在多个模块中你将打破一个定义规则。