我有以下代码:
int calculate_sum_dice(int *dice[2]) {
int sum = 0;
for (int i = 0; i < 2; i++) {
sum += *dice[i];
}
return (sum);
}
dice是一个整数数组,初始化如下:
int die1 = roll_die();
int die2 = roll_die();
int *dice[2] = { die1, die2 };
行
sum += *dice[i]
引发访问冲突读取位置错误
我试着做
sum += dice[i]
但它也会引发错误。
我是C的新手,所以尽管看起来有点陈旧,但我还是感谢你的帮助。
答案 0 :(得分:0)
这是违反约束的行为:
int *dice[2] = { die1, die2 };
意思是它不是有效的C代码。您的编译器必须生成指向该行的诊断消息,或者它不是正确的C编译器。如果确实如此,则不要忽略该消息。如果没有,请获得更好的编译器。
至于让代码工作,只需将指针声明放在调用者中并同时运行。
int dice[2] = { die1, die2 };
calculate_sum_dice(dice);
int calculate_sum_dice(int dice[2])
{
...
sum += dice[i];
函数中的 dice
将默默地“衰减”到指向数组第一个元素的指针。