C中的常量变量

时间:2015-12-10 07:49:18

标签: c

我正在运行一个简单的代码来测试我的理解,如下所示。 我从中获得的输出实际上是10。 我认为输出应该给我一个编译错误,因为“b”不能添加到x,因为x是一个const变量。 有人可以帮助澄清我对此的理解吗?

int aFunction(const int x){
    return (x+10);
}
int main(){
    int b =0;
    b = aFunction(b);
    printf("%d\n",b);
    return 0;
}

4 个答案:

答案 0 :(得分:4)

这一行

   return (x+10);

不向x添加10并将其返回。它形成x+10的值并返回该值但保持x本身不变。

如果你写了

 int c;
 c=x+10;

在第二行执行后,你会期望x增加10吗?

尝试

int aFunction(const int x){
    int c=(x+10);
    printf("aFunction: x=%d c=%d\n",x,c);
    return c;
}

答案 1 :(得分:3)

基本上,将const限定符应用于变量可防止修改变量的值。 在函数aFunction()中,变量x被赋予一个const限定符,它可以防止在函数中修改x的值。没有理由为什么你的代码不能编译,因为所有函数正在做的是返回一个比x多10的值。它不会以任何方式修改x的值。

如果你做了x + = 10这是x = x + 10的缩写,那么你会遇到一些编译错误。

答案 2 :(得分:1)

const int x仅表示x本身无法在函数内部更改。它与返回值无关。

答案 3 :(得分:1)

<强> 简单: 除非您重新初始化x,否则不会更改x,请查看以下几行:

const int x :表示X永远不会被更改。

x + 10 :表示只需在X中添加10但不保存状态。

x = x +10“表示会覆盖将崩溃的x值:您将获得所需的错误