c语言 传值和传地址栏传值乱码

以下试题来自:
填空题C++语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取【
】方式。 参考答案传地址
为您推荐的考试题库
你可能感兴趣的试题
1.填空题 参考答案指针2.填空题 参考答案ch++
printf("\n")3.填空题 参考答案输出4.填空题 参考答案C5.填空题 参考答案4 3 3 4
热门相关试卷
最新相关试卷相关文章推荐:
c语言函数调用
我想,你只要看了C语言上关于传值函数调用的测试题,一切都会了然于胸:1.考题一:程序代码如下:voidExchg1(intx,inty){tmp=x;x=y;y=printf(“x=%d,y=%d\n”,x,y)}voidmain(){inta=4,b=6;Exchg1(a,b);printf(“a=%d,b=%d\n”,a,b)}输出的结果:x=____,y=____a=____,b=____问下划线的部分应是什么,请完成。2.考题二:代码如下。Exchg2(int*px,int*py){inttmp=**px=*&&*py=print(“*px=%d,*py=%d\n”,*px,*py);}main(){inta=4;intb=6;&&&&&Exchg2(&a,&b);&&& ...
其他文章推荐
也就是说,写一个函数:voidcall_function(void*fptr,intargc,void**argv,void*retv);使之能调用一个由fptr指向的函数,传递argc个参数,并将返回值放在retv指向的内存中?有没有可能尽量提高这种操作的效率?...
探讨一个问题:一个程序中需要执行一个函数,有很多个函数被编译进了一个静态库文件,但是主程序并不知道需要执行的函数名是什么需要去读取一个文本文件去获得函数名这个如何实现最好...
&这是从别处看到的一篇文章,感觉写的非常深入细致,是作者学习汇编语言的笔记,但是我觉得这篇文章对理解C函数调用非常有帮助,于是参考作者的步骤在自己的linux机器上实现了一下,并对文章做了一些细小的更改,在此对原作者致谢,如果作者觉得这样有些冒犯的话, ......
在C语言中,假设我们有这样的一个函数:intfunction(inta,intb)调用时只要用result=function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、 ......
我想,你只要看了C语言上关于传值函数调用的测试题,一切都会了然于胸:1.考题一:程序代码如下:voidExchg1(intx,inty){tmp=x;x=y;y=printf(“x=%d,y=%d\n”,x,y)}voidmain(){inta=4,b=6;Exchg1(a,b);printf(“a=%d,b=%d\n”,a,b)}输出的结果:x=____,y=___ ......
在C语言中,假设我们有这样的一个函数:intfunction(inta,intb)调用时只要用result=function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、 ......
/logs/7537173.html我们在这里拿最典型且开源的Unix/Linux平台举例:1.进程进程:程序的一次动态执行过程,是操作系统管理系统活动的基本单位。从内核的角度看,进程是系统中的一个对象,它对应一个程序的执行流并且是一个资源分配(包括内存 ......
本文通过一个C语言例子程序,展示函数调用中参数的传递过程。首先理解函数调用的过程。&1.&每个C函数经过GCC编译后,都会形成下面汇编:.globl&func&&&&&&&&.type&&&func,&@functionfunc:& ......
文章推荐:
盛拓传媒:
友情链接:
特别鸣谢:
北京皓辰网域网络信息技术有限公司. 版权所有
北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证:编号(京)字第1149号
CHINAUNIX推荐文章解答你所有技术难题很多编程老手对传值,传地址,传引用的区别搞的也不会很清楚,今天我就花一点时间再次介绍一下这些概念的本质。
&&&&其实,不用分为三类,只有两类即可。传值和传引用。为什么会出现传地址(即传指针)呢?本质就是大家一致对传值和传地址概念的理解错误导致,也是对指针的概念的理解错误导致。
&&&&指针:(简单补充一下)其实很简单,指针就是一个变量,如果非要说是一个特殊的变量也不为过,因为指针的初始化和解引用等不同的操作方式而已。就内存的分布来说,指针和一个变量在内存中存放是没有任何区别的,无非指针存放的是变量的地址,就是这么简单。
&&&&定义:
&&&&传值:可能很多人都听说,传值无非就是实参拷贝传递给形参。这句话没有错,但是理解起来还是有点抽象。一句话,传值就是把实参赋值给形参,赋值完毕后实参就和形参没有任何联系,对形参的修改就不会影响到实参。
&&&&传地址:为什么说传地址也是一种传值呢?因为传地址是把实参地址的拷贝传递给形参。还是一句话,传地址就是把实参的地址复制给形参。复制完毕后实参的地址和形参的地址没有任何联系,对实参形参地址的修改不会影响到实参, 但是对形参地址所指向对象的修改却直接反应在实参中,因为形参指向的对象就是形参的对象。
&&&&传引用:传引用本质没有任何实参的拷贝,一句话,就是让另外一个变量也执行该实参。就是两个变量指向同一个对象。这是对形参的修改,必然反映到实参上。
&&&&区别:
&&&&(1):传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。
&&&&(2):使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。
&&&&(3):使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
本质:&传值和传指针都是传值方式,除了传引用之外
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区以下试题来自:
填空题C++语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取
方式。 参考答案传地址
为您推荐的考试题库
你可能感兴趣的试题
1.填空题 参考答案软件生命周期2.填空题 参考答案关系模型3.填空题 参考答案B4.填空题 参考答案6 函数 7 类5.填空题 参考答案对象
热门相关试卷
最新相关试卷3792人阅读
PHP传值和传引用、传地址的区别是什么?
传值:
是把实参的值赋值给形参,那么对形参的修改,不会影响实参的值
是传值的一种特殊方式,只是他传递的是地址,不是普通的如int
那么传地址以后,实参和形参都指向同一个对象
真正的以地址的方式传递参数
传递以后,形参和实参都是同一个对象,只是他们名字不同而已
对形参的修改将影响实参的值
从函数调用的角度理解比较好
传值:
函数参数压栈的是参数的副本,任何的修改是在副本上作用,没有作用在原来的变量上。
压栈的是指针变量的副本。
当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。
压栈的是引用的副本。由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作。(作用和传指针一样,只是引用少了解指针的草纸)&&
函数参数传递机制的基本理论
函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题;函数的目的终归是对目标数据的处理(常见的有,设置变量的值等其它属性)。
基本的参数传递机制有两种:值传递和引用传递。
以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数:
值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。(ps:即值传递过程中,函数是对作为局部变量的形参进行的操作!)
引用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。&ps:表面对形参的操作实际是对实参变量的操作。
&如上所述,值传递和引用传递对实参变量的处理过程是不一样的,函数对值的操作和对引用的操作的机制是不一样;形参总是被作为局部变量来处理的,函数会根据在其内存空间中存储的是实参的值的副本还是实参的地址的副本分别处理,至于函数是如何区分值和地址的,我不得而知,貌似也不必知道。
仅讨论一下值传递和引用:
所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy;系统将为目标对象重新开辟一个完全相同的内存空间。
所谓引用,就是说将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。此时,如果对目标对象进行修改,内存中的数据也会改变。
引用的作用&
如果程序比较大,引用同一个对象的变量比较多,并且希望用完该对象后手工清除它,个人建议用 &&& 方式,然后用$var=null的方式清除. 其它时候还是用php5的默认方式吧. 另外, php5中对于大数组的传递,建议用 &&& 方式, 毕竟节省内存空间使用。
当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:
$b =& $a;&
unset ($a);&
不会 unset $b,只是 $a。
global 引用&
当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。也就是说和这样做是相同的:
$var =& $GLOBALS[&var&];&
这意味着,例如,unset $var 不会 unset 全局变量。
在一个对象的方法中,$this 永远是调用它的对象的引用。
php中对于地址的指向(类似指针)功能不是由用户自己来实现的,是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。
传值的话,如果是非对象,会传一个值的拷贝,对这个变量做任何改动都不影响原值。
传引用或者传对象,是传真实的内存地址,对这个变量做的改动会影响原值。
function func1($a) {
$a = $a + 1;
function func2(&$a) {
$a = $a + 1;
$sample = 1;
func1($sample);
echo $ // 输出 1
$sample = 1;
func2($sample);
echo $ // 输出 2
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:124926次
积分:2189
积分:2189
排名:第12512名
原创:76篇
转载:113篇
(1)(1)(1)(3)(9)(18)(32)(32)(93)

我要回帖

更多关于 jsp地址传值 的文章

 

随机推荐