过程参数的传递方式有几种?简述“传地址”和“传值”的实现原理。
参数的传递方式有下述几种: “传值” -- [tex=7.214x1.214]3KWdyhG5HfZcK3YkNl4UpkyIDu5AjtyNys2y8XPL8+s=[/tex]。 “传地址”--[tex=8.429x1.214]3KWdyhG5HfZcK3YkNl4UprxxYN25SLdG51B9ng7Qc+8=[/tex]。 “换名” -- [tex=7.5x1.214]3KWdyhG5HfZcK3YkNl4UpikHrA17Ikmk871DR4qDupo=[/tex]。 “得结果”-- [tex=5.857x1.143]28EjelEJpEbZXeCT77qjrA==[/tex]。“传值”方式,这是最简单的参数传递方法。即将实参计算出它的值,然后把它传给被调过程。具体来讲是这样的:[tex=0.5x1.0]oYgVDn+QZqcDCRxqEZwM2A==[/tex].形式参数当作过程的局部变量处理,即在被调过程的活动记录中开辟了形参的存储空间,这些存储位置即是我们所说的实参或形式单元。[tex=0.5x1.0]8C7DKsr6nhrfCdsmGxO88g==[/tex].调用过程计算实参的值,并将它们的右值([tex=3.643x1.143]Zi0Te9bUotmenrvp1wDr1g==[/tex])放在为形式单元开辟的空间中。[tex=0.5x1.0]/BQKP5E8YnupUQ2sDg7w1Q==[/tex].被调用过程执行时,就像使用局部变量一样使用这些形式单元。 “传地址”方式,也称作传地址,或引用调用。调用过程传给被调过程的是指针,指向实参存储位置的指针。 [tex=0.5x1.0]oYgVDn+QZqcDCRxqEZwM2A==[/tex].如实参是一个名字或是具有左值的表达式,则左值本身传递过去。 [tex=0.5x1.0]8C7DKsr6nhrfCdsmGxO88g==[/tex].如实参是一个表达式,比方 [tex=1.786x1.143]ylu6Mh2NZSh+2Y49tR7MbQ==[/tex] 或 [tex=0.5x1.0]8C7DKsr6nhrfCdsmGxO88g==[/tex],而没有左值,则表达式先求值,并存入某一位置,然后该位置的地址传递过去。 [tex=0.5x1.0]/BQKP5E8YnupUQ2sDg7w1Q==[/tex].被调过程中对形式参数的任何引用和赋值都通过传递到被调过程的指针被处理成间接访问。
举一反三
- 过程调用的参数传递方式有 __ 。 A: 传名 B: 传值 C: 传参数 D: 传地址 E: 传(得)结果
- 中国大学MOOC: 在过程定义中,参数有传值、传地址两种方式,_____________关键字表示传地址方式。
- 下列关于过程叙述不正确的是 A: 无论过程传值调用还是过程传址调用,参数传递都是双向的 B: 过程的传值调用是将实参的具体值传值递给形参 C: 过程的传址调用是将实参在内存的地址传递给形参 D: 过程的传值调用参数是单向传递的,过程的传址调用参数是双向传递的
- 函数的参数传递有传值方式和传引用方式两种。如果采用传引用方式,在参数前添加的关键字是()。
- 在过程定义中,参数有传值、传地址两种方式,_____________关键字表示传地址方式。 A: Value B: ByRef C: ByVal D: Adress E: Link
内容
- 0
当数组作为函数过程的参数是,既能以传值方式传递,也能以传址方式传递。
- 1
下列关于过程叙述不正确的是()。 A: 过程的传值调用是将实参的具体值传递给形参 B: 过程的传址调用是将实参在内存的地址传递给形参 C: 过程的传值调用参数是单向传递的,过程的传址调用参数是双向传递的 D: 无论过程传值调用还是过程传址调用,参数传递都是双向的
- 2
下列关于过程叙述不正确的是__________。 A: 过程的传址调用是将实参在内存的地址传递给形参 B: 过程的传值调用参数是单向传递的,过程的传址调用参数是双向传递的 C: 无论过程传值调用还是过程传址调用,参数传递都是双向的 D: 过程的传值调用是将实参的具体值传递给形参
- 3
下列关于过程叙述不正确的是__________。 A: 过程的传值调用是将实参的具体值传递给形参 B: 过程的传址调用是将实参在内存的地址传递给形参 C: 无论过程传值调用还是过程传址调用,参数传递都是双向的 D: 过程的传值调用参数是单向传递的,过程的传址调用参数是双向传递的
- 4
以下定义的过程是按“传值”方式传递参数的