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 回答