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

Lou*_* B. 20 c scope

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

这是一个例子:

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

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

所以,问题......

  1. 我理解正确吗?
  2. 他们从哪个方面得到了这个想法?

谢谢

Dee*_*epu 12

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

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

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

int main()
{

   x();
   return 0; 
}
Run Code Online (Sandbox Code Playgroud)

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


Joh*_*hnD 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;
Run Code Online (Sandbox Code Playgroud)

  • 啊,事情忘记了是有原因的。多么丑陋的语言。+1 (5认同)

Ale*_*nze 0

1)我的理解正确吗?

差不多了。

2)他们到底是从哪里得到这个想法的???

对于SO来说这不是一个建设性的问题。

  • 同意(2)。与其说是一个问题,不如说是一种沮丧的表达。谢谢。 (2认同)