最近学了指针,想要借此改写一下简单函数引用的事例,但是无法运行,请问是哪里有误吗?感谢解答(合十)
1条回答 默认 最新
关注
【以下回答由 GPT 生成】
#include<stdio.h> int fac(int *n); // 声明函数 fac int main(void) { int n; scanf("%d", &n); fac(&n); // 通过指针调用函数 printf("%d", n); // 输出结果 return 0; } int fac(int *n) { // 改正函数类型为 int int f; if (*n < 0) { printf("n < data error?"); // 输出错误信息 } else if (*n == 0 || *n == 1) { f = 1; // 如果 n 等于 0 或 1,结果为 1 } else { f = fac(n - 1) * (*n); // 递归调用函数 } *n = f; // 将结果赋值给传入的指针 return f; // 返回结果 }
这个代码有几个错误需要修正: 1. 函数声明和定义的返回类型应该一致,因此将声明行改为
int fac(int *n);
2. 函数fac
的类型应该为int
而非void
3. 在递归调用函数时,应该传入指针而非*n - 1
,因此改为fac(n - 1) * (*n)
4. 在递归调用函数结束后,将结果赋值给传入的指针*n = f
5. 最后,函数fac
需要返回结果,因此在函数定义时加上return f;
将结果返回给调用者。【相关推荐】
- 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7528921
- 你也可以参考下这篇文章:C语言:读取文件中若干个身份证号,根据校验码判断身份证的有效性,输出非法身份证。
- 您还可以看一下 李南江老师的零基础学会C语言课程中的 字符串与指针注意点(理解)小节, 巩固相关知识点
- 除此之外, 这篇博客: 写C语言代码时应该注意的一些事情中的 非参数传递中的运算符两边应该附有空格 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 Qt Quick Android 项目报错及显示问题
- ¥15 而且都没有 OpenCVConfig.cmake文件我是不是需要安装opencv,如何解决?
- ¥15 oracleBIEE analytics
- ¥15 github录制项目
- ¥15 H.264选择性加密例程
- ¥50 windows的SFTP服务器如何能批量同步用户信息?
- ¥15 centos7.9升级python3.0的问题
- ¥15 安装CentOS6时卡住
- ¥20 c语言写的8051单片机存储器mt29的模块程序
- ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小