为什么我们不能返回一个结构作为返回值?我也想打印它吗?我想打印返回结构的变量。
#include <stdio.h>
struct distance
{
int feet;
float inch;
};
distance add(struct distance d1,struct distance d2);
distance d3;
int main()
{
struct distance dist1, dist2,dist3;
printf("first distance\n");
scanf("%d",&dist1.feet);
scanf("%f",&dist1.inch);
printf("second distance\n");
scanf("%d",&dist2.feet);
scanf("%f",&dist2.inch);
dist3 = add(dist1,dist2);
printf("sum of distances= %d\'-%.1f\"",dist3.feet,dist3.inch);
return dist3;
}
distance add(struct distance d1,struct distance d2){
//Adding distances d1 and d2 and storing it in d3
d3.feet = d2.feet+d1.feet;
d3.inch = d2.inch+d1.inch;
if(d3.inch>12){
d3.inch-=12;
++d3.feet;
}
}
显示如下错误信息 prog.c:7:1: 错误:未知类型名称“距离” distance add(结构距离d1,结构距离d2);
最佳答案
是的,你当然可以返回一个结构,但你必须使用 return
语句实际返回它:
struct distance add(struct distance d1, struct distance d2)
{
d1.feet += d2.feet;
d1.inches += d2.inches;
while(d1.inches > 12)
{
++d1.feet;
d1.inches -= 12;
}
return d1; /* Return the result. */
}
也没有必要创建 d3
(当然不是全局的!),只需使用其中一个参数作为新值,然后返回
即可。
使用循环来调整溢出更好,所以我也这样做了。
最后,你没有 typedef
struct distance
所以你不能只说 distance
作为返回类型,它必须像参数一样是 struct distance
。
关于c - 为什么我们不能将结构返回给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43141277/