C Локальная переменная имеет то же имя, что и функция - как она работает?
Я преподаю C абсолютным новичкам, и я заметил, что некоторые из моих учеников получают представление о том, чтобы использовать одно и то же имя для функции и локальную переменную в этой функции. Я думаю, что это глупо и предотвратит рекурсию.
Вот пример:
int add2numbers (int a, int b) { /* Tested on Mac OS X with gcc */
int add2numbers = a + b;
return add2numbers;
}
Как я понимаю, как это работает, переменная находится в локальной области функции, а функция находится в глобальной области.
Итак, вопросы...
- Я правильно понимаю это?
- Откуда они берут эту идею?
Спасибо
Ответы
Ответ 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.