软件设计师真题,程序设计语言专项练习(三)

视频讲解

软件设计师 上午题 程序设计专题

传值调用与传引用调用概念

函数调用时,基本的参数传递方式有传值与传地址两种, (20) 。(2009年上半年)
(20)
A. 在传值方式下,形参将值传给实参
B. 在传值方式下,实参不能是数组元素
C. 在传地址方式下,形参和实参间可以实现数据的双向传递
D. 在传地址方式下,实参可以是任意的变量和表达式

函数调用时基本的参数传递方式有传值与传地址两种,在传值方式下是将实参的值传递给形参,因此实参可以是表达式(或常量),也可以是变量(或数组元素),这种信
息传递是单方向的,形参不能再将值传凹给实参。在传地址刀-,而女N‘H是)址传递给形参,因此,实参必须是变量(数组名或数组元素),不能是表达式(或常量)。
这种方式下,被调用函数中对形式参数的修改实际上就是对实际参数的修改,因此客观上可以实现数据的双向传递。

传值与传地址是函数调用时常采用的信息传递方式, (50) 。(2011年上半年)
(50)
A. 在传值方式下,是将形参的值传给实参
B. 在传值方式下,形参可以是任意形式的表达式
C. 在传地址方式下,是将实参的地址传给形参
D. 在传地址方式下,实参可以是任意形式的表达式

一个函数被调用时,可能需要接受从外部传入的数据信息,传值调用与引用调用(传地址)是函数调用时常采用的信息传递方式。传值调用是将实参的值传给被调用函数的形参,引用调用的实质是将实参的地址传给被调用函数的形参。

函数(过程)调用时,常采用传值与传地址两种方式在实参与形参间传递信息。以下叙述中,正确的是 (50) 。(2012年上半年)
(50)
A. 在传值方式下,将形参的值传给实参,因此,形参必须是常量或变量
B. 在传值方式下,将实参的值传给形参,因此,实参必须是常量或变量
C. 在传地址方式下,将形参的地址传给实参,因此,形参必须有地址
D. 在传地址方式下,将实参的地址传给形参,因此,实参必须有地址

一个函数被调用时,可能需要接收从外部传入的数据信息,传值调用与引用调用(传地址)是函数调用时常采用的信息传递方式。传值调用是将实参的值传给被调用函数的形参,因此实参可以是常量、变量、表达式或函数调用,而引用调用的实质是将实参的地址传给被调用函数的形参,因此实参必须具有地址。

以下关于传值调用与引用调用的叙述中,正确的是 (21) 。(2013年上半年)
①在传值调用方式下,可以实现形参和实参间双向传递数据的效果
②在传值调用方式下,实参可以是变量,也可以是常量和表达式
③在引用调用方式下,可以实现形参和实参间双向传递数据的效果
④在引用调用方式下,实参可以是变量,也可以是常量和表达式
(21) A. ①③ B. ①④ C. ②③ D. ②④

调用函数和被调用函数之间交换信息的方法主要有两种:一种是由被调用函数把返回值返回给主调函数,另一种是通过参数传递信息。函数调用时实参与形参间交换信息的基本方法有传值调用和引用调用两种。
若实现函数调用时实参向形参传递相应类型的值,则称为是传值调用。这种方式下形参不能向实参传递信息。实参可以是变量,也可以是常量和表达式。
引用调用的实质是将实参变量的地址传递给形参,因此,形参是指针类型,而实参必须具有左值。变量具有左值,常量没有左值。被调用函数对形参的访问和修改实际上就是针对相应实际参数所作的访问和改变,从而实现形参和实参间双向传递数据的效果。

程序运行过程中常使用参数在函数(过程)间传递信息,引用调用传递的是实参的 (20) 。(2013年下半年)
(20) A. 地址 B. 类型 C. 名称 D. 值

进行函数调用时,常需要在调用环境中的数据传递给被调用函数,作为输入参数由被调用函数处理,基本的调用方式为值调用(或传值调用)和引用调用。其中,值调用
方式下是将实参的值单向地传递给被调用函数的形参,引用调用方式下通过将实参的地址传递给形参,在被调用函数中通过指针实现对实参变量数据的间接访问和修改,从而
达到将修改后的值“传回来”的效果。

在引用调用方式下进行函数调用是将 (21) 。(2014年上半年)
(21)
A. 实参的值传递给形参 B. 实参的地址传递给形参
C. 形参的值传递给实参 D. 形参的地址传递给实参

值调用和引用调用是实现函数调用时传递参数的两种基本方式。在值调用方式下,是将实参的值传给形参,在引用调用方式下,是将实参的地址传递给形参。

常用的函数参数传递方式有传值与传引用两种。 (21) 。(2016年下半年)
(21)
A. 在传值方式下,形参与实参之间互相传值
B. 在传值方式下,实参不能是变量
C. 在传引用方式下,修改形参实质上改变了实参的值。
D. 在传引用方式下,实参可以是任意的变量和表达式。

传值调用和引用调用是常用的两种参数传递方式。在传值调用方式下,是将实参的值传递给形参,该传递是单方向的,调用结束后不会再将形参的值传给实参。在引用调用方式下,实质上是将实参的地址传递给形参,借助指针在间接访问数据方式下(或者将形参看作是实参的别名),在被调用函数中对形参的修改实质上是对实参的修改。

传值调用与传引用调用计算

函数t、f的定义如下所示,其中,a是整型全局变量。设调用函数t前a的值为5,则在函数t中以传值调用(call by value) 方式调用函数f时,输出为 (49) 在函数t中以引用调用(call by reference) 方式调用函数f时,输出为 (50) 。(2011年下半年)
在这里插入图片描述

(49) A. 12 B. 16 C. 20 D. 24
(50) A. 12 B. 16 C. 20 D. 24

发生函数调用时,调用函数与被调用函数之间交换信息的主要方法有传值调用和引用调用两种。
若实现函数调用时实参回形八今双1令一人AHun式下形式参数不能向实际参数传递信息。
在C语言中,要实现被调用函数对实际参数的修改,必须用指针作形参。

需要先对实参进行取地址运算,然后将头今的地址传远泪月Ht多ol调用。
引用是C++中增加的数据类型,当形式今效内7用大生的,效 l"修改本质上就是针对相应实际参数变量所作的访问和改变。
本题中,传值调用方式卜,农达八“X=.1(a)T0,川六值后个易亦量a的值从5给r,这样执行函数f时,r的初始值为5,经N a —ITI19同赋值会v。因此执行变为6,然后“r=r2”将r的值改变为10,“return r”将10返回并赋值给x,
片一
“print a+x”后输出了16。
传值调用方式下,表达式“x= f(a)"中调用f H,I定a a5 然后“r =r
2”将r的因此,经过“a= r+1”运算后,a 的值〈也就定r的5’田业地行“nrint atx”值(也就是a的值)改变为12,“return r”使得将12返回并赋值给x,因此执行“print a+x”
后输出了24。

函数t()、f()的定义如下所示,若调用函数t时传递给x的值为5,并且调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,则函数t的返回值为 (50) 。(2015年下半年)
在这里插入图片描述

(50) A. 33 B. 22 C. 11 D. 负数

在这里插入图片描述

函数main()、f()的定义如下所示,调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,main函数中“print(x)”执行后输出的值为 (50) 。(2016年上半年)

(50) A. 1 B. 6 C. 11 D. 12

函数调用执行时,传值调用是指将实参的值传给形参,形参变量得到实参值的一份拷贝,引用调用实质上将实参变量的地址传给形参变量,在被调用函数中通过指针间接访问实参变量,这样,对形参的修改实质上是对实参变量的修改。本题中,函数f执行时,其形参x得到的值为5,语句“x=2*x+1;”将函数f中x的值改变为11,而形参a实质上引用的是 main函数中的x,若用main_x表示面函数中的变量x,用f_x表示函数f中的形参变量x,则语句“a=atx;”的实质是“main_x = main_x + f_x;",因此结果是main 函数中x的值改为12。

函数main()、f()的定义如下所示,调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,main()函数中“print(x)”执行后输出的值为 (49) 。(2017年上半年)
在这里插入图片描述

(49) A. 11 B. 40 C. 45 D. 70

若实现函数调用时,是将实参的值传递给对应的形参,则称之为传值调用。这种方式下,形参不能向实参传递信息。引用调用的本质是将实参的地址传给形参,函数中对形参的访问和修改实际上就是针对相应实参变量所作的访问和改变。
根据题目说明,调用f时,第一个参数是传值方式,第二个参数是引用方式,因此在main函数中,先将其局部变量x的值加1后(即6)传递给f的第一个参数x,而将其main中x的地址传给f的第二个参数a,因此在f中对a的修改等同于是对main中x的修改。
在f中,x的初始值为6,经过“x=x*x -1”运算后修改为35,经过“a=x+a”运算后将a的值改为40。这里需要注意的是,f中的x与main中的x是两个不同且相互独立的变量。

函数main()、f()的定义如下所示。调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,则函数main()执行后输出的值为 (50) 。(2017年下半年)
在这里插入图片描述

(50) A. 10 B. 19 C. 20 D. 29

实现函数调用时,形参具有独立的存储空间。在传值方式下,是将实参的值拷贝给形参;在传引用方式下,是将实参的地址传递给形参,或者理解为被调用函数中形参名为实参的别名,因此,对形参的修改实质上就是对实参的修改。
题中 main函数中的变量x为局部变量,调用函数f时,f的第一个形参x是函数f的局部量,其初始值为实参传过来的10,经过运算“x= 2*x-1”后修改为19。函数f的第二个形参为引用参数,在f中访问 a本质上是对main函数中x的访问,经过运算“a= a+x”后,将a修改为10+19=29,也就是main函数的局部变量x被改为了29。

函数f和g的定义如下图所示。执行函数f时若采用引用(call by reference)方式调用函数g(a),则函数f的返回值为 (50) 。(2018年下半年)
在这里插入图片描述

(50) A. 14 B. 18 C. 24 D. 28

在函数f中调用g 时,其实参为a,引用调用方式下,g的形参x在函数g 中可看作是f中a 的别名,因此g 执行时,其表达式“m=xm”对应的计算为52赋值给m,m的值改为10,表达式“x=m-1”对应的计算为10-1赋值给x,x的值改为9(也就是f中a的值改为9),g结束时返回x+m(即 9+10)的值19。回到函数f后,c的值被改为调用函数g的结果19,f结束时a+c(即 9+19)的结果28被返回。

函数f、g的定义如下,执行表达式“y=f(2)”的运算时,函数调用g(la)分别采用引用调用(call by reference)方式和值调用(call by value)方式,则该表达式求值结束后y的值分别为 (50) 。(2019年上半年)
在这里插入图片描述

(50) A. 9、6 B. 20、6 C. 20、9 D. 30、9

实现f(2)调用时,传给函数f的参数x的值为2,la的值为3,以引用调用方式调用g(la)时,执行函数g时,对g的参数x的修改等同于对la的修改,因此通过x=xx+1将la改为10,因此表达式 lax的值为102=20;以传值方式调用g(la)时,f中 la的值不改变,表达式lax的值为3*2=6。

函数foo()、hoo()定义如下,调用函数hoo()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式。设有函数调用foo(5),那么“print(x)”执行后输出的值为 (48) 。(2020年下半年)
在这里插入图片描述

(48) A. 24 B. 25 C. 30 D. 36

函数foo()、hoo()定义如下,调用函数hoo(a, x)的两个参数分别采用引用调用(call by reference)和值调用(call by value)方式传递,则函数调用foo(5)的输出结果为 (50) 。(2021年上半年)
在这里插入图片描述

(50) A. 2,5 B. 2,15 C. 13,5 D. 13,15

猜你喜欢

转载自blog.csdn.net/weixin_50843918/article/details/134905071