今天我正在阅读有关纯函数的内容,对其用法感到困惑:
如果一个函数为同一组输入返回同一组值并且没有任何可观察到的副作用,则该函数被称为纯函数。
e.g. strlen()
是一个纯函数,而rand()
是一种不纯的。
__attribute__ ((pure)) int fun(int i)
{
return i*i;
}
int main()
{
int i=10;
printf("%d",fun(i));//outputs 100
return 0;
}
http://ideone.com/33XJU http://ideone.com/33XJU
上述程序的行为方式与没有pure
宣言。
将函数声明为有什么好处pure
[如果输出没有变化]?
pure
让编译器知道它可以对函数进行某些优化:想象一下像这样的代码
for (int i = 0; i < 1000; i++)
{
printf("%d", fun(10));
}
对于纯函数,编译器可以知道它需要计算fun(10)
一次且仅一次,而不是 1000 次。对于复杂的函数来说,这是一个巨大的胜利。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)