是否可以向main返回多个值。例如,如果我有这个完美的数字问题。是否有可能将完美的数字返回到主要和&从那里打印出来??
#include<stdio.h>
void perfect(int*,int);
int main()
{
int i,arr[10];
for(i=0;i<=10;i++)
{
printf("Enter range");
scanf("%d",&arr[i]);
}
perfect(arr,10);
return 0;
}
void perfect(int *ptr,int size)
{
int i=0,j=0,sum=0,res=0;
for(i=0;i<size;i++)
{
sum=0;
for(j=1;j<=*ptr/2;j++)
{
if(*ptr%j==0)
{
sum=sum+j;
}
}
if(sum==*ptr)
{
printf("%d is perfect",*ptr);
}
ptr++;
}
}
答案 0 :(得分:2)
是的,这确实已经发生了。
arr
将衰减为指针类型,该值按值传递给perfect
。
您可以在函数arr
中的ptr
上通过指针算法修改perfect
。
考虑使用size_t
作为size
参数的类型;它专为存储阵列的大小而设计。在呼叫站点,您可以使用sizeof(arr) / sizeof(arr[0])
惯用语来产生大小。不要忘记在函数中使用该参数值,而不是硬编码数字10。