将非const变量传递给C中带有const参数的函数

时间:2017-12-04 11:36:56

标签: c

我的功能如下

void foo(const foo_type* x)
{...}

我在其他功能中调用此函数。

void foo1(int z)
{
    foo_type y = z;
    foo(&y);
}

这不会在c中引发任何错误,但我觉得有些不正确。 当我将非const变量传递给期望将const变量作为参数的函数时会发生什么。

1 个答案:

答案 0 :(得分:5)

const介绍,你的方式非常好甚至是可取的。

您已明确告知编译器该函数不会修改作为const传递的参数。这甚至可以帮助编译器的优化策略。

const删除通常是一个坏主意。 (在这种情况下,您不会这样做。)通过删除最初声明为const的{​​{1}}来修改变量的行为是 undefined 。< / p>