我想在C中使用指针来执行void factorial函数。这是我的代码,但它不会运行。
#include <stdio.h>
void factorial(int, int*);
int main()
{
int n;
int r = 0;
printf("Enter n : ");
scanf("%d", &n);
if (n < 0)
{
printf("No factorial for negative");
}
else
{
factorial(n , &r);
printf("factorial of %d is %d", n, r);
}
}
void factorial(int n , int *r)
{
if (n == 0 || n == 1)
{
*r= 1;
}
else
{
*r= n* factorial((n-1), r);
}
}
我得到的错误是在代码的最后一行说:类型&#34; int&#34;的无效操作数。和&#34;无效&#34;到二元运算符*,这意味着什么以及如何解决它?
答案 0 :(得分:1)
好吧,如果factorial()返回void(基本上没有返回任何内容),这一行没有任何意义
*result = num * factorial ((num-1), result);
答案 1 :(得分:0)
这是因为factorial()
会返回void
。
尝试:
factorial((num-1), result);
*result= num *(*result);
而不是那条线。
答案 2 :(得分:0)
如果声明返回void,则不能使用函数的返回值。 如果你想以这种方式声明函数,那么你的阶乘函数可以是:
void factorial(int num , int *result)
{
if (num == 0 || num == 1)
{
//*result = 1;
return;
}
else
{
*result *= num;
factorial ((num-1), result);
}
但在main
函数中,您应该将int res = 0
更改为int res = 1
。