我在这里遇到一个问题,我在写一个常量对象时遇到错误。 是的,我知道我是,但是对于这个功能,它要求用户输入骰子1-5的值,输入(i)将被分配给骰子[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]);
}
}
答案 0 :(得分:4)
咦?
你知道你会写入论点,但你仍然将其声明为const
?为什么?这没有意义。
你总是可以试图抛弃const
,但这非常难看,几乎不可能完成,当然不会出现在像你这样的情况下:
scanf("%d", (int *) &dice[i]);
此外,您必须检查scanf()
的返回值,它是脆弱的I / O并且可能会失败。
答案 1 :(得分:3)
如果你知道你不会将它们视为常数,那么不要将事物声明为const
。
你写了一行
void readDieValues(const int dice[], int nrOfDice)
这是你与世界的合约,告诉你你保证不会改变价值观。既然您已经签订了该合同,那么您希望更改dice
的值。而是写
void readDieValues(int dice[], int nrOfDice)
并且没有做出这样的承诺