c - 我想使用指针从函数返回多个值,但它返回一个值

标签 c

我想从用户定义函数返回多个值,但它只返回一个变量。这是代码:

#include <stdio.h>
double sum_n_avg(double, double, double, double*, double*);

int main()
{
    double n1, n2, n3, sump, avgp;
    printf("enter numbers:");
    scanf("%lf%lf%lf", &n1, &n2, &n3);

    printf("sum and average is %lf",sum_n_avg(n1, n2, n3, &sump, &avgp));
    return 0;
}

double sum_n_avg(double n1, double n2, double n3, double *sump, double *avgp)
{
    *sump = n1 + n2 + n3;
    *avgp = *sump / 3;

}

最佳答案

您的代码具有未定义的行为,如 sum_n_avg() 不返回任何内容,但 printf("sum and average is %lf", ??); 期望一个值.

但你期待这样的事情

void sum_n_avg(double n1,double n2,double n3,double *sump,double *avgp) {
        *sump=n1+n2+n3;
        *avgp=*sump/3;         
}
int main() {
        double n1,n2,n3,sump,avgp;
        printf("enter numbers:");
        scanf("%lf%lf%lf",&n1,&n2,&n3);

        sum_n_avg(n1,n2,n3, &sump,&avgp); /* call like this */
        printf("sum and average is %lf and %lf\n",sump,avgp);/*sump and avgp gets updated from sum_n_avg() function */
        return 0;
}

关于c - 我想使用指针从函数返回多个值,但它返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49844622/

相关文章:

c - 将数据插入二叉搜索树中的链表

c++ - 用于实时曲面 segmentation 的 GLUTesselator?

c - 这是什么意思,我该如何纠正它 *** 检测到堆栈粉碎 *** : ./array1output 终止

c++ - 如何使用 Windows Native API 访问 PE 资源?

c - 在C中将操作发送到后台

c - C程序中if语句的时钟周期数?

c - 使用 while 循环检查 struct 的内容

ios - 为 iPad 2 进行开发

c++ - 如何为 fuse readdir() 正确分配缓冲区?

c - C中的二维数组