【发布时间】:2019-12-01 12:03:43
【问题描述】:
我正在尝试 malloc 一个结构数组,代码有效,但我收到这些警告,我做错了什么吗?
typedef struct BATTLES_s{
char day_of_the_week[MAX_ARR];
char date[MAX_ARR];
char time[MAX_ARR];
char team_one_name[MAX_ARR];
char team_two_name[MAX_ARR];
int team_one_score;
int team_two_score;
int peers;
}BATTLES_s;
int main()
{
int total_number_of_battles;
count_number_of_battles(&total_number_of_battles); /* this value is 182 */
BATTLES_s *battles = malloc(total_number_of_battles * sizeof(*battles));
malloc_battle_struct(total_number_of_battles,battles);
print_result();
}
void malloc_battle_struct(int total_number_of_battles,BATTLES_s battles[MAX_STRUCT_ARRAY]){
int i;
for (i = 0; i <= total_number_of_battles; i++)
{
*battles[i].date = malloc( sizeof(char) * MAX_ARR );
*battles[i].day_of_the_week = malloc( sizeof(char) * MAX_ARR );
*battles[i].team_one_name = malloc( sizeof(int) * MAX_ARR );
*battles[i].team_two_name = malloc( sizeof(char) * MAX_ARR );
*battles[i].time = malloc( sizeof(char) * MAX_ARR );
}
}
警告:从 'void *' 赋值给 'char' 使指针从没有强制转换的整数 [-Wint-conversion] *battles[i].date = malloc( sizeof(char) * MAX_ARR );
警告:从 'void *' 赋值给 'char' 使指针从没有强制转换的整数 [-Wint-conversion] *battles[i].day_of_the_week = malloc( sizeof(char) * MAX_ARR );
警告:从 'void *' 赋值给 'char' 使指针从没有强制转换的整数 [-Wint-conversion] *battles[i].team_one_name = malloc( sizeof(int) * MAX_ARR );
警告:从 'void *' 赋值给 'char' 使指针从没有强制转换的整数 [-Wint-conversion] *battles[i].team_two_name = malloc( sizeof(char) * MAX_ARR );
警告:从 'void *' 赋值给 'char' 使指针从没有强制转换的整数 [-Wint-conversion] *battles[i].time = malloc( sizeof(char) * MAX_ARR );
【问题讨论】:
-
在这种情况下“工作”是什么意思?你在看哪本C书?分配数组是不可能的,你已经分配了它们,这里的一切都是错误的。事实上,您可以完全删除
malloc_battle_struct并调用它。 -
我稍后会使用数组来存储姓名和分数,并且它可以工作。但我认为你是对的,我这里根本不需要“malloc_battle_struct”..