-1

我在这里遇到一个问题,我收到一个错误,说写入一个常量对象。是的,我知道我是,但是对于这个函数,它要求用户输入骰子 1-5 的值,并且 input(i) 将被分配给 dice[i],这不起作用,因为它是恒定的,我该如何解决这个问题?

谢谢

void readDieValues(const int dice[], int nrOfDice)
{
//Reads user inut
     int i = 0;

//When i > 0 and < 5 the user is asked to entar a value for dice i+1
//Dice i+1 because i starts at 0 and dies are numbered from 1-5

    for ( ; i < 5 ; i++){
        printf("Die %d: ", i+1);
        scanf("%d", &dice[i]);
    }
}
4

2 回答 2

4

嗯?

您知道您要写入参数,但您仍将其声明为const? 为什么?那没有意义。

您总是可以尝试丢弃const,但这非常难看,几乎永远不应该这样做,当然不是在像您这样的情况下:

scanf("%d", (int *) &dice[i]);

此外,您必须检查 的返回值scanf(),它是脆弱的 I/O 并且可能会失败。

于 2013-10-17T12:36:02.747 回答
3

const如果您知道您不会将它们视为常量,请不要声明它们。

你写了这行

void readDieValues(const int dice[], int nrOfDice)

这是你与世界的契约,告诉它你承诺不改变价值观。现在您已经签订了合同,您想要更改 的值dice。而是写

void readDieValues(int dice[], int nrOfDice)

并且不做这样的承诺

于 2013-10-17T12:38:46.590 回答