在调用函数时,函数是怎样传值的

我现在在自学湖南大学版c语言程序设计教程,书本我已经看到第六章第一节了,可是里面第三点有个函数的传值方式这一小节我看不懂,请教高人指点一下。... 我现在在自学湖南大学版c语言程序设计教程,书本我已经看到第六章第一节了,可是里面第三点有个函数的传值方式这一小节我看不懂,请教高人指点一下 。 展开
 我来答
胡神父
2011-02-25 · TA获得超过648个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:182万
展开全部

函数的传值方式很多,不知道你说的哪一种。、

一般的有两种:直接传值和间接传值

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;

这里要注意的是如果参数是指针、数组。那么传进来的也是一个地址。会影响到函数外面的。

毋惜苼5v
2011-03-04
知道答主
回答量:16
采纳率:0%
帮助的人:14.4万
展开全部
在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中计算,即达到了调用的目的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灰晞郁
2011-02-24 · TA获得超过103个赞
知道答主
回答量:43
采纳率:0%
帮助的人:50.4万
展开全部
不知道你是具体什么地方看不懂。函数的值传递分为利用全局变量和利用参数传递。其中利用全局变量传递因为安全性较低而使用较少。

参数传递分为值传递和地址传递。值传递主要是把实参(这个名词理解了吗?)复制一份,传递给形参,然后再在函数里进行相应指令的执行,优点就是编译时会给形参分配相应的地址和空间,不会改变实参的值。函数调用结束后形参的作用也就结束了。

地址传递要涉及到指针(按照我用的教材的编排是先讲函数后讲指针的,所以刚读到地址传递的时候很摸不着头脑……),优点就是能通过形参改变实参的值(也可以说这是缺点,地址传递的副作用,改变了原来的数据)。
追问
我把原话打出来,函数的传值方式,
我要说的问题在图片里,,字多了,这里打不下,你看了给我分析一下好么,他的具体数值的传递过程是什么。谢谢了
追答
你书中的这段是我上面所说的参数传递中的值传递。举个例子讲(这是一个求阶乘的函数):
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并不受影响。大概过程就是这样了,不知道我有没有说清楚呵~^-^||
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5a0204c
2011-02-24 · 超过16用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:34.5万
展开全部
自学的时候看一堆文字很容易感觉绕不清楚,所以建议你先把书上那一章相对应的例子好好看看,再上机实现一下这些例子,看看不同的参数传递会带来哪些不同的结果,可以帮助并加深理解。
也可能你看的教材本身对这个知识点就讲的不多,也没有什么例程,那么建议你参考一下别的教科书对此的讲解。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户56166
2011-03-05 · TA获得超过222个赞
知道答主
回答量:163
采纳率:0%
帮助的人:0
展开全部
用Graphics的成员方法GetHdc获得,Graphics可以用静态方法FromHwnd创建某个窗体的绘图器,把某个窗体的Handle传给他就可以了,如果Handle传0,则创建的是整个屏幕的绘图器。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式