老师说是c语言形参 实参传递无法传回实参,懂怎么回事,但是不知道该怎该不用指针!求助

C++笔记二十四:C++中函数参数传递的方式C++笔记二十四:C++中函数参数传递的方式依法编程百家号原创笔记,转载请注明出处!点击【关注】,关注也是一种美德~C++中函数参数传递的方式在C++中,参数传递的方式是“实虚结合”。 函数被调用时的传参方式有三种形式(C语言中没有“引用”,另外两个相同):(1)按值传递(pass by value)(2)地址传递(pass by pointer)(3)引用传递(pass by reference)1、按值传递过程为:首先计算出实参表达式的值,接着给对应的形参变量分配一个存储空间,该空间的大小等于该形参类型的,然后把求出的实参表达式的值一一存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用。这种传递是把实参表达式的值传送给对应的形参变量,故称这种传递方式为“按值传递”。使用这种方式,调用函数本身不对实参进行操作,也就是说,即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值。2、按地址传递如果在函数定义时将形参声明成指针,对这样的函数进行调用时就需要指定地址值形式的实参。这时的参数传递方式就是地址传递方式。地址传递与按值传递的不同在于,它把实参的存储地址传送给对应的形参,从而使得形参指针和实参指针指向同一个地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。按地址传递的好处:(1)能在函数内部通过实参地址间接地改变实参的值。(2)当所传实参内容比较庞大时,传址只是复制了整个实参的地址过去,指针依据同一个地址访问实参变量。而传值就会将实参内容整个拷贝过去,形参会跟实参占一样大的内存,栈空间是有限的。当然了,在弱小的程序中,传址的这个优点不会被体现出来。指针传递的实质:指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。这里是在说实参指针本身的地址值不会变。3、按引用传递按值传递方式容易理解,但形参值的改变不能对实参产生影响。地址传递方式虽然可以使得形参的改变对相应的实参有效,但如果在函数中反复利用指针进行间接访问,会使程序容易产生错误且难以阅读。如果以引用为参数,则既可以使得对形参的任何操作都能改变相应的数据,又使得函数调用显得方便、自然。引用传递方式是在函数定义时在形参前面加上引用运算符“&”。形参相当于是实参的“别名”,对形参的操作其实就是对实参的操作,在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。原创笔记,转载请注明出处!更多精彩请关注微信公众号:依法编程本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。依法编程百家号最近更新:简介:编程、法律等学习笔记交流作者最新文章相关文章在C语言中,数组作为参数,是怎样在函数之间传递的啊?额,这个我们还没学到指针的,能讲得通俗易懂点吗?
数组作为参数是按地址传递的数组名就是数组的首地址.因此在数组名作函数参数时所进行的传送只是地址的传送,也就是说把实参数组的首地址赋予形参数组名.形参数组名取得该首地址之后,也就等于有了实在的数组.实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间.
原式=[1/(-2)?]×[1/(x+y)^4]×[1/(x-y)?]×[1/(x+y)]×(x-y)^6=(1/4)×1/[(x+y)^5×(x-y)?]×(x-y)^6=(x-y)^4/[4(x+y)^5]
matlab关于输出图形的小问题程序如下R0=100;%理论基圆半径/mmr=27.5;%转子半径/mmL1=180;L2=105;du=180/%弧度制转换为角度制wt1=1:1:75;%凸轮转角按5度等分总共75度Y0=(acos((L1^2+L2^2-(R0+r)^2)/(2*L1*L2)))*%理论基圆筘座角/度Y1=23.9123*(pi*wt1/75-0.5*sin(2*pi*wt1/75))/%筘座角随凸轮角变化规律/度Y=Y0+Y1;%筘座基圆角加变化角R=sqrt(L1^2+L2^2-2*L1*L2*cos(Y/du));%理论凸轮极径/mmfor i=1:1:75x(i)=R(i)*cos(i*pi/180.0);y(i)=R(i)*sin(i*pi/180.0);endplot(x,y,'r')hold on我想输出一个在第一象限中1到75度的弧,可是却输出另一种东西,
按你的程序,运行结果如下,没什么问题啊
在等腰三角形ABC中,AB=AC,腰长AB与底边BC之比为5:8,底边BC上的高AD为3倍根号3,求这个等腰三角形的周长求这个等腰三角形的周长和面积.
AD=3√3∵AB:BC=5:8∴AB:BD=5:4∴AD:BD:AB=3:4:5∵AD=3√3∴BC=8√3AB=5√3∴C=18√3S=36
和 差 倍角的三角函数已知sin(β-π/6)=3/5 β在(0 .π/2) 求sinβ 就用和差倍角的三角函数知识解,
sin(β) = sin(β-π/6+π/6)=sin(β-π/6)cos(π/6) + cos(β-π/6)sin(π/6)= 3/5*√3/2 + 4/5 * 1/2 = 3√3/10 + 2/5如果还有不懂的,可以点击用户名到我网站来提问,我会尽力为你回答的
其他相关问题函数章节中,实参为指针,而形参为数组,是什么情况【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:302,120贴子:
函数章节中,实参为指针,而形参为数组,是什么情况收藏
实参为指针,传递到形参一个地址,若地址当作数组首地址,那只知道首地址也无法确定一个数组啊,那这个传递是神马意思
void main(){int a[10],i;for(i=0;i&10;i++) cin&&a[i];sort(a,10);cout&&&排序后&&&for(i=0;i&10;i++)
cout&&a[i]&&& &;}
这个主函数中,若将调用函数sort的实参从数组改为指针,主函数应该怎么变?
打得好累。。。。大神看一下顺便指导一下吧。。。
sort(a, 10); 这个10就是用来告诉数组的大小
数组的头本来就是一个指针.普通数组并不做越界判断.所以我有你指针和你的类型了.我是不是可以按照你类型的大小从你的头地址按大小去取?就好比.你头地址你0001.然后你是1大小数组.那我自然就知道你的第2位是0002所以你直接用int*a,a[1]就等同于去0002取你的东西了
如果你用指针,也要告诉排序函数数组元素的个数
回复 有思想的苇草7 :并不需要变化.因为void sort(int a[],int size)void sort(int * a,int size)int a[3];int*ssort(a,3);sort(a,3);ssort(b,3);sort(b,3);这样表明你定义成a[]和a*是一样的.而且两者一样无法确定你数组的大小.都要你手动传进来.所以并没有区别
登录百度帐号C语言教学中函数参数传递问题探讨.docdoc下载_爱问共享资料
C语言教学中函数参数传递问题探讨.doc.doc
C语言教学中函数参数传递问题探讨.doc.doc
C语言教学中函数参数传递问题探讨.doc.doc
简介:本文档为《C语言教学中函数参数传递问题探讨.docdoc》,可适用于考试题库领域,主题内容包含C语言教学中函数参数传递问题探讨docC语言教学中函数参数传递问题探讨C语言教学中函数参数传递问题探讨概述函数是C语言程序的基本构成模块通过使用函数符等。
侵权或盗版
*若权利人发现爱问平台上用户上传内容侵犯了其作品的信息网络传播权等合法权益时,请按照平台要求书面通知爱问!
赌博犯罪类
在此可输入您对该资料的评论~
添加成功至
资料评价:【图文】C语言看不懂形参实参以及调用方法的必看_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言看不懂形参实参以及调用方法的必看
&&C语言学习知识
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 c语言形参 实参传递 的文章

 

随机推荐