値渡しとアドレス渡しの問題

値渡しとアドレス渡しの例

2023 年上半期のソフト試験の実際の質問:

22. 関数 foo と hoo の定義を下図のようにします 関数 hoo は関数 foo 内で呼び出されます hoo の第一引数は参照を渡す方法(参照渡し)と、引数を渡す方法を採用します2 番目のパラメータを値で指定すると (値で呼び出し)、関数 foo で print(a, b) が出力されます ()

 

A.8,5
B.39,5
C.8,40
D.39,40

参考回答:B

答えと分析

質問の難易度: 簡単

  • 知識ポイント:プログラミング言語の基礎 > 値渡しとアドレス渡し
  • 試験問題の分析:

質問に記載されている呼び出しプロセスによると、hoo() の最初のパラメータ2 番目のパラメータは値渡しの呼び出しであるため、 hoo() のmの変更は最終的に渡される呼び出しに影響します。オリジナルの foo() 関数。パラメータaは、 aによって出力される最終値です。hoo() 関数のプロセスによれば、最初に渡されたbのパラメータは元のm =5 で、この時点ではm =x *m = 8*5=40 になります (ここでのm はローカル変数であり、hoo でのみ使用されることに注意してください) ())、そしてxの最初に渡されるパラメータです。パラメータは元のa = 8です。このとき、x=m-1 = 40-1=39となり、最終的なグローバル変数aの値は39になります(ここでの元のa はグローバル変数であり、 hoo() パラメーターのエイリアスxとして理解できることに注意してください。ここで、mはローカル変数であり、以前に取得したものです。
5 )。

1 つの事例から推論を引き出す: 2020 年の質問 39

関数 foo() と hoo0 は次のように定義されており、関数 hoo() を呼び出す際、第 1 パラメータは値による呼び出し方式、第 2 パラメータは参照による呼び出し方式を採用します。関数呼び出し(関数 foo(5))を想定すると、print(x) の実行後に出力される値は ( ) となります。

 

  • (A)24
  • (B)25
  • (C)30
  • (D)36

答えと分析

  • 質問の難易度: 簡単
  • 知識ポイント:プログラミング言語の基礎 > 値渡しとアドレス渡し
  • テスト質問の答え: [['A']]
  • 試験問題の分析:

質問に記載されている呼び出しプロセスによると、hoo() の最初のパラメータは値による呼び出し、2 番目のパラメータは参照による呼び出しであるため、hoo() での a の変更は最終的に渡される呼び出しに影響します。オリジナルの foo() 関数。パラメータ x は、x の最終出力値です。
hoo() 関数のプロセスによれば、x に渡される初期パラメータは元の args=5 であり、この時点では x=x-1=4 (ここでの x はローカル変数であり、hoo() でのみ使用されることに注意してください)。 a に渡される初期パラメータは元の x =6 で、この時点では a=a*x=6*4=24、最終的なグローバル変数 x の値は 24 です。(ここでの元の x はグローバル変数であり、hoo() パラメーターのエイリアス a として理解できることに注意してください。x はローカル変数であり、以前に取得した 4 です)。

おすすめ

転載: blog.csdn.net/ck3345143/article/details/132236312