成功解决“函数用于调用的参数太少/太多”问题 |
您所在的位置:网站首页 › 你输入的函数参数太少 › 成功解决“函数用于调用的参数太少/太多”问题 |
🦄个人主页:修修修也 🎏所属专栏:程序调试及报错解决 ⚙️操作环境:Visual Studio 2022 我们在使用C语言编写程序,特别是使用函数递归时经常会遇到编译器报错“用于调用的参数太少/太多”,如图: 那么遇到这种情况我们该如何解决呢? 原因分析首先以下面一段代码为例向大家解释问题到底出在哪里: #define _CRT_SECURE_NO_WARNINGS 1 #include int power(int x,int y) { if (y>1) { return x * power(y-1); } else { return x; } } int main() { int n = 0; int k = 0; scanf("%d %d", &n,&k); printf("%d",power(n, k)); return 0; }如图,这是一段使用函数递归的方式求解n的k次方的程序代码。看似没有什么问题,但如果你原封不动的将该段代码放在编译器运行时却会导致编译器报错,如图: 然而问题就出在第 7行代码: return x * power(y-1);注意,power函数在定义时是创建了两个形式参数的,即x和y: int power(int x,int y)那么在后续调用power函数时就需要传给它两个参数才行,而第七行代码明显只传给了power函数一个参数,因此会导致编译器报错“用于调用的参数太少”。 解决方法在搞清楚了编译器为何会报错之后,我们的解决方法也非常简单,即,将原代码改为: return x * power(x,y-1);这样就确保了在调用函数时会传给power函数两个参数供其使用,就可以防止编译器报错。 当然,如果你在定义函数时创建了三个甚或是更多的形式参数,那么就请务必在后续调用该函数时传给它数量相同的参数供函数使用,这样就能保证编译器不会报错啦。 相关文章推荐 【C语言】判断字符类型的三种方法 【C语言】qsort()函数详解:能给万物排序的神奇函数 【C语言】整形数据和浮点型数据在内存中的存储 【C语言】结构体的大小是如何计算的(结构体对齐) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |