C 如何使用指针将输入函数中的2 int,1 float变量输入传递给main函数?
我正在制作账单计算器,我需要在输入函数中输入2整数和1真实数字,我需要将这3个数字转换为月份函数,用输入函数提供的3个数字计算账单C 如何使用指针将输入函数中的2 int,1 float变量输入传递给main函数?,c,pointers,C,Pointers,我正在制作账单计算器,我需要在输入函数中输入2整数和1真实数字,我需要将这3个数字转换为月份函数,用输入函数提供的3个数字计算账单 ... float input(int*,int*,float*); void months(int, int, int, int, float, float,int,int,float); ... int main() { ... int x1,y1; float z1; ... int *x= &x1; int *y= &
...
float input(int*,int*,float*);
void months(int, int, int, int, float, float,int,int,float);
...
int main()
{
...
int x1,y1;
float z1;
...
int *x= &x1;
int *y= &y1;
float *z= &z1;
}
float input(int*x,int*y,float*z)
{
...
printf("\nInput your usages of voice : ");
scanf_s("%d", &x);
printf("Input your usages of text : ");
scanf_s("%d", &y);
printf("Input your usages of data : ");
scanf_s("%f", &z);
...
}
void months(...,int*x,int*y,float*z)
{
...
}
如果我输入x,y,z150100,2.11
150100,2.11也放在months函数中,但months函数x,y,z是垃圾值。您已经在input中获得了参数中变量的地址,因此替换 借 因此,您不需要在main中使用指针变量,您可以替换 借 如果我能很好地理解函数月,你也可以直接给出x1,y1,z1,而不是它们的地址。注意声明void monthsint,int,int,int,float,float,int,int,float;与定义不匹配,甚至部分无效月…,int*x,int*y,float*z 我还鼓励您检查scanf_s的结果,以确保用户输入有效的输入 如果考虑到我的评论,我更改了您的代码:
#include <stdio.h>
int input(int*,int*,float*);
float months(int, int, float);
int main()
{
int x1,y1;
float z1;
if (input(&x1, &y1, &z1))
printf("%g\n", months(x1, y1, z1));
return 0;
}
/* return 0 if an input is erronned */
int input(int*x,int*y,float*z)
{
printf("\nInput your usages of voice : ");
if (scanf_s("%d", x) != 1)
return 0;
printf("Input your usages of text : ");
if (scanf_s("%d", y) != 1)
return 0;
printf("Input your usages of data : ");
if (scanf_s("%f", z) != 1)
return 0;
return 1;
}
/* return the bill */
float months(int x,int y,float z)
{
return x + 1.2 * y + z *100; /* just to return a value */
}
scanf_s("%d", x);
...
scanf_s("%d", y);
...
scanf_s("%f", z);
int x1,y1;
float z1;
...
int *x= &x1;
int *y= &y1;
float *z= &z1;
...
float v = input(x,y,z); /* added */
int x1,y1;
float z1;
...
float v = input(&x1,&x2,&z1); /* added */
#include <stdio.h>
int input(int*,int*,float*);
float months(int, int, float);
int main()
{
int x1,y1;
float z1;
if (input(&x1, &y1, &z1))
printf("%g\n", months(x1, y1, z1));
return 0;
}
/* return 0 if an input is erronned */
int input(int*x,int*y,float*z)
{
printf("\nInput your usages of voice : ");
if (scanf_s("%d", x) != 1)
return 0;
printf("Input your usages of text : ");
if (scanf_s("%d", y) != 1)
return 0;
printf("Input your usages of data : ");
if (scanf_s("%f", z) != 1)
return 0;
return 1;
}
/* return the bill */
float months(int x,int y,float z)
{
return x + 1.2 * y + z *100; /* just to return a value */
}
pi@raspberrypi:/tmp $ gcc -pedantic -Wall -Wextra i.c
pi@raspberrypi:/tmp $ ./a.out
Input your usages of voice : 150
Input your usages of text : 100
Input your usages of data : 2.11
481