在C中将多个值返回到main

时间:2017-03-17 09:43:48

标签: c

是否可以向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++;
     }

   }

1 个答案:

答案 0 :(得分:2)

是的,这确实已经发生了。

arr 衰减为指针类型,该值按值传递给perfect

您可以在函数arr中的ptr上通过指针算法修改perfect

考虑使用size_t作为size参数的类型;它专为存储阵列的大小而设计。在呼叫站点,您可以使用sizeof(arr) / sizeof(arr[0])惯用语来产生大小。不要忘记在函数中使用该参数值,而不是硬编码数字10。