为什么这个程序在运行后显示的结果为0???

#include<iostream>

using namespace std;

void fun(int p,int b=2,int c=3);
void fun(int p,int b,int c)
{
p=b*c;

}


int main(void)
{
int F;
int m=6;
int a=2;
fun(F,m,a);
cout<<F<<","<<"The force is"<<endl;
return 0;
}


qq_ChrisDuke_0
浏览 1352回答 2
2回答

TerryLau

因为你用的是值传递,只能改变子函数fun中的p值,而不能改变实参F的值。你可以在fun中输出p检验一下。想要改变实参的值,必须使用引用或者地址传递(指针)。以下是我修改后的代码:----我用的是引用----#include<iostream>#include<stdlib.h>using namespace std;//void fun(int &p,int &b,int &c);  子函数放在main上面,就可以不用原型声明void fun(int &p,int &b,int &c)    //引用{p=b* c;// cout<<p<<endl;}int main(void){int F=0;int m=6;int a=2;fun(F,m,a);cout<<F<<endl;system("pause");    //  程序暂停return 0;}
打开App,查看更多内容
随时随地看视频慕课网APP