C局部变量与函数同名 - 它是如何工作的?

时间:2013-04-25 13:59:13

标签: c scope

我教C给绝对的初学者,我注意到我的一些学生得到的概念是在函数中使用相同的名称和局部变量。我认为这很愚蠢,会阻止递归。

以下是一个例子:

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

我理解它是如何工作的方式是变量在函数的局部范围内,并且函数在全局范围内。

所以,问题......

  1. 我是否理解正确?
  2. 他们从哪个人那里获得了这个想法?
  3. 由于

3 个答案:

答案 0 :(得分:11)

假设函数是全局的并且变量是本地的,那么你是正确的。这就是为什么你的程序没有冲突的原因。

现在考虑下面给出的程序,

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

int main()
{

   x();
   return 0; 
}

您将收到错误,因为在此程序中,函数x()和变量x都是全局的。

答案 1 :(得分:4)

Pascal:)

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;

答案 2 :(得分:0)

  

1)我是否正确理解这一点?

非常。

  

2)h ***他们从???

获得了这个想法

不是SO的建设性问题。