|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
void sub(double a, double *pb)
int main ()
{
double x,y;
scanf("%f%f",&x,&y);
sub(x, &y);
printf("x=%f y=%f\n",x,y);
}
void sub(double a,double *pb)
{
a=a-*pb;
*pb=*pb-a;
}
题目输入10.2 3.5<回车>,输出结果是x=10.200000 y=-3.200000
为什么函数值y改变了,而x没有改变。
本帖最后由 风过无痕1989 于 2020-11-25 16:06 编辑
调用函数,不能直接将值传递过去(这就好比告诉你,有一个名叫 张山 的人,可是并没有告诉你,这个人的住址,你是找不到这个人的。或许长江路有叫张山的,黄河路上也有叫张山的,其他的城市也会有叫张山的),要传递值所在存贮区域的地址,这就是 10.2 没有改变,3.5 改变了的原因。
另外,你的程序有两个错误,已经帮你修改,看下面程序的注释
- #include <stdio.h>
- void sub(double a, double *pb); // 分号不可少
- int main()
- {
- double x,y;
- scanf("%lf%lf",&x,&y); // 输入 double 型,控制符号经用:%lf
- sub(x, &y); // 将 x 、 & 作为函数的实际参数(简称:实参)
- printf("x = %f y = %f\n",x,y);
- }
- void sub(double a,double *pb) // 以 double a 和 double *pb 的形式参数(简称:形参)接收主调函数传递过来的实参
- {
- a = a - *pb;
- *pb = *pb - a;
- }
复制代码
|
|