如何在Pike语言中实现传引用?阶乘函数实现求助
Pike语言实现传引用式阶乘函数的解决方案
首先明确:Pike语言不支持原生的标量类型传引用,所有标量(int、float等)都是按值传递的。要实现类似传引用的效果,你可以用以下两种方法:
方法一:使用数组作为容器传递
数组属于引用类型,修改数组内的元素会直接影响原数组。示例代码:
void factorial(int N, array(int) resp) { resp[0] = 1; // 初始化阶乘起始值 for (int i = 1; i <= N; i++) { resp[0] *= i; } } // 调用示例 int result[1]; factorial(5, result); write("5的阶乘是:" + result[0] + "\n"); // 输出120
方法二:使用对象封装结果
创建一个简单的对象来存储阶乘值,通过修改对象属性实现值的返回:
class ResultHolder { int value; } void factorial(int N, ResultHolder resp) { resp.value = 1; for (int i = 1; i <= N; i++) { resp.value *= i; } } // 调用示例 ResultHolder res = ResultHolder(); factorial(5, res); write("5的阶乘是:" + res.value + "\n"); // 输出120
为什么你的代码不生效?
你写的ref int FAT语法在Pike中不存在,Pike没有ref关键字声明传引用参数。标量类型默认按值传递,函数内修改的只是参数的副本,不会影响外部变量。
内容的提问来源于stack exchange,提问作者SwFly
相关产品推荐
相关产品推荐

