Подтвердить что ты не робот

C Локальная переменная имеет то же имя, что и функция - как она работает?

Я преподаю C абсолютным новичкам, и я заметил, что некоторые из моих учеников получают представление о том, чтобы использовать одно и то же имя для функции и локальную переменную в этой функции. Я думаю, что это глупо и предотвратит рекурсию.

Вот пример:

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

Как я понимаю, как это работает, переменная находится в локальной области функции, а функция находится в глобальной области.

Итак, вопросы...

  • Я правильно понимаю это?
  • Откуда они берут эту идею?

Спасибо

4b9b3361

Ответ 1

Вы правы в том, что функция глобальна, а переменная локальна. Вот почему в вашей программе нет конфликта.

Теперь рассмотрим приведенную ниже программу,

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

int main()
{

   x();
   return 0; 
}

Вы получите сообщение об ошибке, потому что в этой программе функции x() и variable x являются глобальными.

Ответ 2

Паскаль:)

Простая функция в 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;

Ответ 3

1) Правильно ли я понимаю это?

В значительной степени.

2) Где h *** они получают эту идею от???

Не конструктивный вопрос для SO.