25

私はまったくの初心者に C を教えていますが、一部の生徒は、関数と関数内のローカル変数に同じ名前を使用するという概念を理解していることに気付きました。それは間抜けで、再帰を防ぐと思います。

次に例を示します。

int add2numbers (int a, int b) { /* Tested on Mac OS X with gcc */
    int add2numbers = a + b;
    return add2numbers;
}

それがどのように機能するかを理解する方法は、変数が関数のローカルスコープにあり、関数がグローバルスコープにあるということです。

それで、質問は...

  1. 私はこれを正しく理解していますか?
  2. 彼らはどこからそのアイデアを得ているのですか?

ありがとう

4

3 に答える 3

16

関数がグローバルで、変数がローカルであると仮定するのは正しいです。これが、プログラムに競合がない理由です。

ここで、以下に示すプログラムを考えてみましょう。

#include<stdio.h>
int x=10;
void x()
{
  printf("\n%d",x);
}

int main()
{

   x();
   return 0; 
}

x()このプログラムでは関数と変数の両方xがグローバルであるため、エラーが発生します。

于 2013-04-25T14:08:04.887 に答える
6

パスカル:)

Pascal の単純な関数:

function max(num1, num2: integer): integer;
   var
   (* local variable declaration *)
   result: integer;
begin
   if (num1 > num2) then
      result := num1
   else
      result := num2;
   max := result;
end;
于 2013-04-25T14:05:57.057 に答える
0

1) 私はこれを正しく理解していますか?

かなり。

2) 彼らはどこからそのアイデアを得ているのですか???

SOにとって建設的な質問ではありません。

于 2013-04-25T14:03:23.167 に答える