程序员 · 高频练习

函数参数传值和传引用有什么区别?

初级 单选题 第 173 题 中等 程序员函数参数传值调用引用调用
题目

某函数接收一个变量作为参数。在函数内部修改形参后,调用者原来的变量没有变化;另一个函数修改形参后,调用者原变量也发生变化。两种情况分别更接近()。

A 传值调用;引用调用
B 引用调用;传值调用
C 路由转发;域名解析
D 图像压缩;音频采样
题目类型:原创高频考点题 用途:用于帮助理解程序员相关考点和答案解析,不等同于官方真题。
书木兰刷题练习 适合懒人、小白的刷题通关平台
正确答案
A
答案解析

传值调用会把实参的值复制给形参,函数内部修改形参通常不影响调用者原来的变量。引用调用则让形参和实参指向同一份数据或同一个对象,函数内部修改可能反映到调用者那里。考试题不一定纠结具体语言实现,重点看“函数内修改后,外面的变量是否跟着变”。

选项分析

A

正确。前者修改不影响原变量,后者修改会影响原变量。

B

错误。两个概念顺序反了。

C

错误。路由和 DNS 是网络概念,不是函数参数传递方式。

D

错误。图像压缩和音频采样属于多媒体处理。

本题为什么容易错

很多同学只背术语,不看结果。做参数传递题最稳的办法是盯住副作用:函数里改了以后,外面到底变没变。

先看结论

简短答案

函数参数传值和传引用有什么区别,正确答案是 A(传值调用;引用调用)。传值调用会把实参的值复制给形参,函数内部修改形参通常不影响调用者原来的变量。引用调用则让形参和实参指向同一份数据或同一个对象,函数内部修改可能反映到调用者那里。考试题不一定纠结具体语言实现,重点看“函数内修改后,外面的变量是否跟着变”。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
传值调用;引用调用 本题正确答案 正确。前者修改不影响原变量,后者修改会影响原变量。 看到题干核心场景时优先联想到它
引用调用;传值调用 本题干扰项 错误。两个概念顺序反了。 看到该词不要急着选,先判断是否真正解决题干问题
路由转发;域名解析 本题干扰项 错误。路由和 DNS 是网络概念,不是函数参数传递方式。 看到该词不要急着选,先判断是否真正解决题干问题
图像压缩;音频采样 本题干扰项 错误。图像压缩和音频采样属于多媒体处理。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 引用调用;传值调用:错误。两个概念顺序反了。
  • 路由转发;域名解析:错误。路由和 DNS 是网络概念,不是函数参数传递方式。
  • 图像压缩;音频采样:错误。图像压缩和音频采样属于多媒体处理。
复习

知识点详解

引用调用是程序员考试中需要结合场景理解的考点。围绕“函数参数传值和传引用有什么区别”这类题目,复习时要先看题干描述的是概念定义、适用场景、作用效果,还是与其他选项的区别。本题的题干关键词是“某函数接收一个变量作为参数。在函数内部修改形参后,调用者原来的变量没有变化;另一个函数修改形参后,调用者原变量也发生变化。两种情况分别更接近()”,它指向的核心答案是 A(传值调用;引用调用)。

备考速记

备考速记:题干如果强调“引用调用”中的关键目标,就先联想到 引用调用;如果选项里出现 引用调用;传值调用、路由转发;域名解析、图像压缩;音频采样,不要只看名称熟悉,要判断它们是否真正对应题干场景。

引用调用在引用调用场景中的作用

引用调用在本题中的核心价值,是解决“某函数接收一个变量作为参数。在函数内部修改形参后,调用者原来的变量没有变化;另一个函数修改形参后,调用者原变量也发生变化。两种情况分别更接近()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出引用调用场景,判断应该选择哪个概念、工具、协议或管理过程。
  • 考查引用调用的作用,要求从四个相近选项中找出最符合题干目标的一项。
  • 把引用调用和引用调用;传值调用、路由转发;域名解析、图像压缩;音频采样放在一起考,重点看适用场景是否一致。
  • 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
引用调用在程序员软考中的考法

软考选择题通常不会只考概念定义,还会把引用调用放到引用调用场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

题干前半句说修改形参后原变量没有变化,这是传值;后半句说原变量也变化,这是引用。老师讲这类题时一般会让你画两张小图:传值是复印一份,改复印件;引用是拿着同一把钥匙去改同一个房间。

考点定位

传值看副本,引用看同一对象;判断点是函数内修改是否影响调用者变量。

易错提醒

  • 把形参和实参的名字相同误认为一定是同一个变量。
  • 忽略数组、对象等复合类型在不同语言中的传递规则。
  • 只看函数返回值,没看函数内部是否修改了参数。

备考提示

  • 程序员题遇到函数调用,先区分参数传递方式、返回值和变量作用域。
  • 如果题干强调“调用前后变量值变化”,优先想到传值和引用的区别。

你可能还想了解

  • 函数参数传值和传引用有什么区别?
  • 引用调用是什么?
  • 引用调用在程序员考试中怎么考?
  • 程序员引用调用题怎么理解?
  • 函数参数传值和传引用区别怎么考?
  • 程序员软考函数参数怎么考?

本文小结

本题核心考点是引用调用在引用调用场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(传值调用;引用调用)。