以下程序输出的结果是? fun(int a,int b,int c) { c=a*b;
答案:6 悬赏:80 手机版
解决时间 2021-01-16 02:31
- 提问者网友:临风不自傲
- 2021-01-15 05:54
以下程序输出的结果是? fun(int a,int b,int c) { c=a*b;
最佳答案
- 五星知识达人网友:duile
- 2021-01-15 06:21
cout输出的是fun函数的实参,虽然在fun函数中有c的计算 但是这个c是函数形参 是个局部变量 和main函数当中的c不是一样的 当fun函数返回后 局部变量c的值已经释放了 main函数中输出的c值仍然是未定义的
全部回答
- 1楼网友:爱难随人意
- 2021-01-15 11:21
这个是因为 这个C
看上去好像输出的是 6
其实可能是个 很小的负值 比如-789768123
答案之所以无法确定是因为
代码中的几个C
不是同一个C
如果
int c;
void fun(int a,int b)
{ c=a*b;}
void main
{ fun(2,3);
cout<<c;
}
这么写 那么输出肯定是 6
这个跟值传递有关,你可以去看看形参
看上去好像输出的是 6
其实可能是个 很小的负值 比如-789768123
答案之所以无法确定是因为
代码中的几个C
不是同一个C
如果
int c;
void fun(int a,int b)
{ c=a*b;}
void main
{ fun(2,3);
cout<<c;
}
这么写 那么输出肯定是 6
这个跟值传递有关,你可以去看看形参
- 2楼网友:过活
- 2021-01-15 09:07
函数写的有问题。
应该这么写
void fun(int a,int b, int& c) //注意c
{
c = a*b;
}
为什么?
如果按照你写的函数,c的值是不会改变的,其运行过程可以理解成如下样子:
进入fun前 int c = 0;
传入fun后其实可以转义成如下函数
void fun(int a,int b,int c)
{
int _a = a; //在进入函数体之后,会隐士的创建一个新的临时变量来替代传入变量
int _b = b;
int _c = c;
_c = _a*_b;
}
而如果改成 int& c ,则传入的就是c本体,函数内部不会做隐士的转变。
如果你学了指针的话,函数也可以改成如下样子
void fun(int a,int b,int* c)
{
*c = a*b;
}
void main()
{
int c = 0;
fun(2,3,&c);
cout << c;
}
暂时理解到这个程度就成,过一阶段学东西多了,就能理解的深入了。
应该这么写
void fun(int a,int b, int& c) //注意c
{
c = a*b;
}
为什么?
如果按照你写的函数,c的值是不会改变的,其运行过程可以理解成如下样子:
进入fun前 int c = 0;
传入fun后其实可以转义成如下函数
void fun(int a,int b,int c)
{
int _a = a; //在进入函数体之后,会隐士的创建一个新的临时变量来替代传入变量
int _b = b;
int _c = c;
_c = _a*_b;
}
而如果改成 int& c ,则传入的就是c本体,函数内部不会做隐士的转变。
如果你学了指针的话,函数也可以改成如下样子
void fun(int a,int b,int* c)
{
*c = a*b;
}
void main()
{
int c = 0;
fun(2,3,&c);
cout << c;
}
暂时理解到这个程度就成,过一阶段学东西多了,就能理解的深入了。
- 3楼网友:渊鱼
- 2021-01-15 07:35
你的c没有初始化,所以c是什么不确定,fun()使用的参数是临时的,并没有改变c的值,你可以将c的值先附一个值,你就一直看到只会输出那个值。你可以将fun()参数改为传引用或者用指针,就可以改变c的值。继续百度下传引用就可以
- 4楼网友:走死在岁月里
- 2021-01-15 06:43
从主函数开始,首先,楼主你声明了一个整型变量c,由于没有赋值,系统给它赋一个随机值。接下来进入fun函数,这时,系统在另一个地方开辟了一块内存存储a,b,c形参,(注意,这里系统是另一个地方开辟了一个c,而不是原来的那个c,这也是你的问题核心所在),然后把2的值赋予a,把3的值赋予b,把c的值赋予c(注意,是把原来main函数的那个实参c赋予fun函数的形参c),然后c=a*b是fun函数里的形参进行的计算,这时形参c=6(注意不是原来的那个c=6,因为两个c的地址是不一样的,不是同一个东西)。这时,函数完成,系统把刚才在调用函数时开辟的a,b,c给清除掉了,而你原来的c实际上并没有参与运算,还是那个随机值。要想显示c=6可以这样:
fun(int a,int b,int c)
{ c=a*b;
cout<<c;
}
void main
{int c; fun(2,3,c);}
或者
fun(int a,int b,int &c)
{ c=a*b;}
void main
{int c; fun(2,3,c);
cout<<c;
}
或者
fun(int a,int b,int *c)
{ *c=a*b;}
void main
{int *c; fun(2,3,c);
cout<<*c;
}
你的符号是全角,为了便于比较我没改。
给分啊。
fun(int a,int b,int c)
{ c=a*b;
cout<<c;
}
void main
{int c; fun(2,3,c);}
或者
fun(int a,int b,int &c)
{ c=a*b;}
void main
{int c; fun(2,3,c);
cout<<c;
}
或者
fun(int a,int b,int *c)
{ *c=a*b;}
void main
{int *c; fun(2,3,c);
cout<<*c;
}
你的符号是全角,为了便于比较我没改。
给分啊。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯