指针作为参数的实际意义中,最重要定的是可以实现多个“返回值”
通过指针作为函数的传出参数可以实现函数的多值返回
例如
求阶乘的例子:
#include<stdio.h>
int Factorial(int input1) //计算传入参数input的阶乘
{
int result = 1;
int j;
if(input1 < 0)
{
printf("错误输入/n");
return -1;
}
if(0 == input1)
return result;
else
for(j = 1;j <= input1;j++)
{
result = result * j;
}
return result;
}
int FactorialSum(int input2) //计算0!+1!+2!+...n!
{
int i;
int sum = 0;
if(input2 < 0)
return -1;
else
for(i = 0; i <= input2;i++)
{
sum += Factorial(i);
}
return sum;
}
int Factorial2(int input3,int *sum) //使用传出参数,实现多值返回
{
int result;
int j;
*sum = 0;
result = Factorial(input3);
for(j = 0;j <= input3;j++)
{
*sum += Factorial(j);
}
return result;
}
int main()
{
int input; //要输入的数据
int result; //单个数阶乘的结果
int sum; //从0!到n!的和的结果
printf("Please input the number: ");
scanf("%d",&input);
result = Factorial(input);
printf("The Factorial of %d is %d/n",input,result);
sum = FactorialSum(input);
printf("The Facorial Sum from 0 to %d is: %d/n",input,sum);
result = Factorial2(input,&sum);
printf("The Facorial Sum from 0 to %d is: %d/n",input,sum);
getchar();
getchar();
return 0;
}