结构体数据作为参数在函数间传递有哪几种方式?请指出它们的异同点。

题目

结构体数据作为参数在函数间传递有哪几种方式?请指出它们的异同点。

参考答案和解析
正确答案: 结构体作为参数在函数之间进行传递主要有下列三种方式:
复制传递方式:把调用函数中结构体实参的值复制给被调用函数的形参构体。
地址传递方式:将调用函数中实参结构体的地址传递给被调用函数形参的结构体指针。
引用方式:被调用函数的形参应该说明为引用结构体变量形式。实际上,它是为实参结构化起一个别名。
另外,还可以通过全局变量的方式在函数间进行数据传递,但这种方式不好,增加函数之间的耦合性。
地址传递方式要比复制方式效率高。结构体复制传递方式需要对实参做一个备份,它把一个结构体变量作为参数传递,但要将结构体全部成员值一个一个传递,费时间又费空间,开销大。如果结构体的成员较多,则程序运行效率会大大降低,而采用地址传递方式将结构体变量的地址作为函数参数比较好,能提高运行效率。复制传递方式不影响调用函数实参的数值,而地址传递方式有可能影响实参的数值。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

函数调用参数的传递方式有三种,值传递、【 】和引用传递。


正确答案:指针传递
指针传递

第2题:

以下关于函数过程的叙述中,正确的是 ______。

A.函数过程形参的类型与函数返回值的类型没有关系

B.在函数过程中,过程的返回值可以有多个

C.当数组作为函数过程的参数时,既能以传值方式传递,也能以传址方式传递

D.如果不能指明函数过程参数的类型,则该参数没有数据类型


正确答案:A
解析:如果不指明函数过程参数的类型,函数类型默认为Variant类型,所以选项D是错误的。在函数过程中,过程的返回值只有一个,所以选项B是错误的。一般数组通过传址方式进行传递,所以选项C是错误的。函数过程形参的类型与函数返回值的类型没有关系,所以选项A是正确的。

第3题:

( 26 )以下关于函数过程的叙述中,正确的是

A )函数过程形参的类型与函数返回值的类型没有关系

B )在函数过程中,过程的返回值可以有多个

C )当数组作为函数过程的参数时,既能以值方式传递,也能以传址方式传递

D )如果不指明函数过程参数的类型,则该参数没有数据类型


正确答案:A

第4题:

数据结构里,函数参数为哪项时,参数传递属于值传递。()

  • A、数组
  • B、指针
  • C、字符数组
  • D、int型

正确答案:D

第5题:

函数调用时,基本的参数传递方式有传值与传地址两种,(16)。A.在传值方式下,形参将值传给实参SXB

函数调用时,基本的参数传递方式有传值与传地址两种,(16)。

A.在传值方式下,形参将值传给实参

B.在传值方式下,实参不能是数组元素

C.在传地址方式下,形参和实参间可以实现数据的双向传递

D.在传地址方式下,实参可以是任意的变量和表达式


正确答案:C
本题考查程序语言基础知识。函数调用时基本的参数传递方式有传值与传地址两种,在传值方式下是将实参的值传递给形参,因此实参可以是表达式(或常量),也可以是变量(或数组元素),这种信息传递是单方向的,形参不能再将值传回给实参。在传地址方式下,需要将实参的地址传递给形参,因此,实参必须是变量(数组名或数组元素),不能是表达式(或常量)。这种方式下,被调用函数中对形式参数的修改实际上就是对实际参数的修改,因此客观上可以实现数据的双向传递。

第6题:

C++语言的函数参数传递方式有值传递和【 】、引用传递。


正确答案:地址传递
地址传递

第7题:

下列关于函数过程的叙述中,正确的是( )。

A. 如果不指明函数过程参数的类型,则该参数没有数据类型

B. 函数过程的返回值可以有多个

C. 函数过程形参的类型与函数返回值的类型没有关系

D. 当数组作为函数过程的参数时,既能以传值方式传递,也能以引用方式传递


正确答案:C
c)    【解析】本题考查过程定义。在VB中出现的变量,如果没有声明类型,那么为变体型。VB中可以通过调用函数过程得到返回值,一个函数过程只能有一个返回值,如果需要改变主调过程的参数,可以进行传址方式调用函数。VB数组参数中不存在传址调用,函数的参数和返回值类型之间没有任何关系。

第8题:

以下关于函数过程的叙述中,正确的是( )。

A.如果不指明函数过程参数的类型,则该参数没有数据类型

B.函数过程的返回值可以有多个

C.当数组作为函数过程的参数时,既能以传值方式传递,也能以引用方式传递

D.函数过程形参的类型与函数返回值的类型没有关系


正确答案:D

第9题:

在函数调用中,值调用方式将( ),下面所定义的函数foo为值调用方式,函数g的第一个参数采用值调用,第二个参数采用引用调用方式传递数据。若有表达式y=foo(2),则foo调用执行之后,y被赋值为(请作答此空)。

A.8
B.7
C.5
D.3

答案:B
解析:
判断一个字符串能否被指定的自动机识别,就是在该自动机的状态图中能否找到从开始状态到达终止状态的路径,且路径上的字符串等于需要识别的字符串。

第10题:

数据结构里,函数参数为()时,参数传递属于地址传递。

  • A、数组
  • B、指针
  • C、字符数组
  • D、int型

正确答案:A,B,C