向函数传值的时候形参不会影响实参的值,可是下面的程序运行结果为什么是5 6 3 4啊,搞不懂,跟全局变量
向函数传值的时候形参不会影响实参的值,可是下面的程序运行结果为什么是5634啊,搞不懂,跟全局变量有关吗。。求大神指教,,谢谢了#include<stdio.h>inta...
向函数传值的时候形参不会影响实参的值,可是下面的程序运行结果为什么是5 6 3 4啊,搞不懂,跟全局变量有关吗。。求大神指教,,谢谢了
#include <stdio.h>
int a=1,b=2;
void fun1(int a ,int b)
{printf("% d% d",a,b);
}
void fun2()
{ a=3,b=4;
}
main()
{fun1(5,6);fun2();
printf("% d% d\n",a,b);
} 展开
#include <stdio.h>
int a=1,b=2;
void fun1(int a ,int b)
{printf("% d% d",a,b);
}
void fun2()
{ a=3,b=4;
}
main()
{fun1(5,6);fun2();
printf("% d% d\n",a,b);
} 展开
4个回答
展开全部
没错,是5634.先运行main----fun1(5,6)----显示5,6----fun2----a=3,b=4----显示3,4
以上是运行顺序。你一开始的int a=1,b=2;只是声明了a和b两个变量,他们的赋值你在fun1中就更改了。
以上是运行顺序。你一开始的int a=1,b=2;只是声明了a和b两个变量,他们的赋值你在fun1中就更改了。
追问
谢谢你,函数形参的值不是不影响实参吗,最后输出的为什么是函数里面的3.4啊,而不是1,2有点不懂。
追答
你的fun2是不返回值的,和形参、实参没有关系了。你的fun1是带参数的,fun2不带,他只是把你一开始的a=1,b=2变成a=3,b=4了
展开全部
main()
{
fun1(5,6); //这里是传值 局部变量ab 屏蔽了全局的ab 所以全局的ab的值不受影响 输出的值是fun1的形参的值
//printf("% d% d\n",a,b);你可以加上这一句 看一下
fun2(); //这里ab的值变了 因为ab是全局变量 全局变量任何函数都可以访问到 ab若是局部变量的话 这里会出错。
printf("% d% d\n",a,b);
}
{
fun1(5,6); //这里是传值 局部变量ab 屏蔽了全局的ab 所以全局的ab的值不受影响 输出的值是fun1的形参的值
//printf("% d% d\n",a,b);你可以加上这一句 看一下
fun2(); //这里ab的值变了 因为ab是全局变量 全局变量任何函数都可以访问到 ab若是局部变量的话 这里会出错。
printf("% d% d\n",a,b);
}
追问
谢谢你,函数形参的值不是不影响实参吗,最后输出的为什么是函数里面的3.4啊,而不是1,2有点不懂。
追答
fun2函数访问的是全局变量的ab 是对ab的实际赋值操作 你的理解呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void fun1(int a ,int b) 这里是局部变量,作用范围只在这个函数内,传入的是5,6输出也是5,6
{
printf("% d% d",a,b);
}
void fun2()
{
a=3,b=4; }
main() 这里a,b都是全局变量,在fun2()中设置为3,4
{
fun1(5,6);fun2();
printf("% d% d\n",a,b); 所以这里a,b输出也为3,4
}
{
printf("% d% d",a,b);
}
void fun2()
{
a=3,b=4; }
main() 这里a,b都是全局变量,在fun2()中设置为3,4
{
fun1(5,6);fun2();
printf("% d% d\n",a,b); 所以这里a,b输出也为3,4
}
追问
谢谢你,函数形参的值不是不影响实参吗,最后输出的为什么是函数里面的3.4啊,而不是1,2有点不懂。
追答
因为a=1,b=2是全局变量,调用fun2()后将全局变量a,b的值更改了,所以输出的是3,4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fun1的a,b遵守局部优先原则,所以形参起作用
fun2中用的是全局变量
fun2中用的是全局变量
追问
谢谢你,函数形参的值不是不影响实参吗,最后输出的为什么是函数里面的3.4啊,而不是1,2有点不懂。
追答
形参不影响实参的值
fun2中你改变了全局变量的值,所以是3,4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询