在调用函数时,函数是怎样传值的
我现在在自学湖南大学版c语言程序设计教程,书本我已经看到第六章第一节了,可是里面第三点有个函数的传值方式这一小节我看不懂,请教高人指点一下。...
我现在在自学湖南大学版c语言程序设计教程,书本我已经看到第六章第一节了,可是里面第三点有个函数的传值方式这一小节我看不懂,请教高人指点一下 。
展开
5个回答
展开全部
函数的传值方式很多,不知道你说的哪一种。、
一般的有两种:直接传值和间接传值
1、直接传值就是传到函数里面只是一个值,函数中用这个值的时候与函数外互不影响,这种传值一般是基本数据类型。例如:
定义的时候void function(int a){a++;}
调用的时候int a=1;function(a);printf("%d",a);这里输出是1;
2、间接传值传递的是变量的地址,在函数中的变量的改变会影响到外面的输出。例如:
定义的时候void function(int &a){a++;}
调用的时候int a=1;function(a);printf("%d",a);这里输出是2;
这里要注意的是如果参数是指针、数组。那么传进来的也是一个地址。会影响到函数外面的。
展开全部
在C语言中,实参将值传给函数中的形参,实现了自上而下的值传递,就可以调用函数了。
举个浅显一点的例子吧:
#include<stdio.h>
void main()
{
int swap(int x,int y);
int a,b;
......
swap(a,b);
}
int swap(int x,int y)
{
......
}
在主函数中,将实参a,b的值传递给被调用函数中的形参x,y,即将a,b分别代入x,y中计算,即达到了调用的目的。
举个浅显一点的例子吧:
#include<stdio.h>
void main()
{
int swap(int x,int y);
int a,b;
......
swap(a,b);
}
int swap(int x,int y)
{
......
}
在主函数中,将实参a,b的值传递给被调用函数中的形参x,y,即将a,b分别代入x,y中计算,即达到了调用的目的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道你是具体什么地方看不懂。函数的值传递分为利用全局变量和利用参数传递。其中利用全局变量传递因为安全性较低而使用较少。
参数传递分为值传递和地址传递。值传递主要是把实参(这个名词理解了吗?)复制一份,传递给形参,然后再在函数里进行相应指令的执行,优点就是编译时会给形参分配相应的地址和空间,不会改变实参的值。函数调用结束后形参的作用也就结束了。
地址传递要涉及到指针(按照我用的教材的编排是先讲函数后讲指针的,所以刚读到地址传递的时候很摸不着头脑……),优点就是能通过形参改变实参的值(也可以说这是缺点,地址传递的副作用,改变了原来的数据)。
参数传递分为值传递和地址传递。值传递主要是把实参(这个名词理解了吗?)复制一份,传递给形参,然后再在函数里进行相应指令的执行,优点就是编译时会给形参分配相应的地址和空间,不会改变实参的值。函数调用结束后形参的作用也就结束了。
地址传递要涉及到指针(按照我用的教材的编排是先讲函数后讲指针的,所以刚读到地址传递的时候很摸不着头脑……),优点就是能通过形参改变实参的值(也可以说这是缺点,地址传递的副作用,改变了原来的数据)。
追问
我把原话打出来,函数的传值方式,
我要说的问题在图片里,,字多了,这里打不下,你看了给我分析一下好么,他的具体数值的传递过程是什么。谢谢了
追答
你书中的这段是我上面所说的参数传递中的值传递。举个例子讲(这是一个求阶乘的函数):
int fectorial (int n)
{
if (n==0)
return 1;
else
return n*fectorial (n-1);
}
你把int fectorial (int n)这句和书中的函数自定义格式对照下。通俗点讲,形参就是你在函数定义(或者声明)的时候后面的那个列表(int n中的n),实参则是你在main函数中你输入的具体n的值。比如你输入3(调用时语句为:fectorial(3);),则编译时把3(实参)传递给形参(int n),为n开辟新空间,在函数中计算得到结果6。计算结束后,收回给n开辟的空间,而实参的值3并不受影响。大概过程就是这样了,不知道我有没有说清楚呵~^-^||
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自学的时候看一堆文字很容易感觉绕不清楚,所以建议你先把书上那一章相对应的例子好好看看,再上机实现一下这些例子,看看不同的参数传递会带来哪些不同的结果,可以帮助并加深理解。
也可能你看的教材本身对这个知识点就讲的不多,也没有什么例程,那么建议你参考一下别的教科书对此的讲解。
也可能你看的教材本身对这个知识点就讲的不多,也没有什么例程,那么建议你参考一下别的教科书对此的讲解。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用Graphics的成员方法GetHdc获得,Graphics可以用静态方法FromHwnd创建某个窗体的绘图器,把某个窗体的Handle传给他就可以了,如果Handle传0,则创建的是整个屏幕的绘图器。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询