C++中函数实参传递给行参失败问题,大家帮帮我看看问题出在哪里?

#include<iostream>
using namespace std;
void xsfz(int);
int main()
{int x,f;
cin>>x; ..1
cin>>f; ..2
xsfz(x,f); ..3
}
void xsfz(int i,int j)
{cout<<"Enter the number of hours:";
cout<<endl;
cout<<"Enter the number of minutes:";
cout<<endl;
cout<<"Time: "<<x<<":"<<f;
}

1.2中的值为什么无法传递到3中呢?我是新手~大家帮我修改修改,谢谢~!

#include<iostream>
using namespace std;
void xsfz(int,int); // 你的这里形参不对
int main()
{int x,f;
cin>>x;
cin>>f;
xsfz(x,f);
return 0;
}
void xsfz(int i,int j)
{cout<<"Enter the number of hours:";
cout<<endl;
cout<<"Enter the number of minutes:";
cout<<endl;
cout<<"Time: "<<i<<":"<<j; // 这里也错了
}

函数申明部分和定义部分参数个数,类型都要一致
你这样传递是单向传递
意思是x f原来有一个存储空间,让后传递给i,j,i,j有自己独立的空间 不同于原来x,f的空间,如果在函数中改变i,j的值,x,f的值是不会改变的,因为在不同的空间嘛。如果想要变成双向传递可以这样申明函数
void xsfz(int &,int &);表示i,j 是x,j的引用,或者理解为别名,小名,反正指的是同一个空间的数值,这样i,j的改变也会使得x,f改变 ,
或者用指针也有这种功能 void xsfz(int *,int *);
还有不懂的 加740547353呵呵
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-07-13
首先你前后声明的xsfz函数,参数个数都不一样。
前面那个改成 void xsfz(int,int);
第2个回答  2008-07-14
后面你传递的是x哪么在cout<<"Time: "<<x<<":"<<f; 就应该改为
cout<<"Time: "<<i<<":"<<f;
第3个回答  2008-07-13
声明时改为 void xsfz(int,int);
还有 cout<<"Time: "<<x<<":"<<f; 改为cout<<"Time: "<<i<<":"<<j;
第4个回答  2008-07-13
程序写完整,要不怎么改?
相似回答