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

Posted

技术标签:

【中文标题】C局部变量与函数同名-它是如何工作的?【英文标题】:C Local variable has same name as function - how does it work? 【发布时间】:2013-04-19 11:12:05 【问题描述】:

我向绝对初学者教授 C 语言,我注意到我的一些学生有这样的想法,即在函数中使用相同的名称并在函数中使用局部变量。我认为这很愚蠢并且会阻止递归。

这是一个例子:

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

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

所以,问题...

    我理解正确吗? 他们从哪里得到这个想法?

谢谢

【问题讨论】:

为那些孩子+1!从来没想过!! XD 1) 你是对的。 2) 帕斯卡? 赋值给与函数同名的变量,Pascal和Basic中不就是这样返回值的吗? 感谢这些 cmets。我正在考虑回答这个问题。对于 Biniyaka,是的,他们可以变得非常有创意 :) 【参考方案1】:

假设函数是全局的而变量是局部的,这是正确的。这就是你的程序没有冲突的原因。

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

#include<stdio.h>
int x=10;
void x()

  printf("\n%d",x);


int main()


   x();
   return 0; 

你会得到一个错误,因为在这个程序中函数x()和变量x都是全局的。

【讨论】:

没错。然而,如果他们在函数 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;

【讨论】:

啊,事情忘记是有原因的。多么丑陋的语言。 +1 谢谢!现在我的问题(好吧,这不是一个真正的问题)是非程序员在哪里学习 Pascal ???【参考方案3】:

1) 我理解正确吗?

差不多。

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

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

【讨论】:

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

以上是关于C局部变量与函数同名-它是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C 中引用与全局变量同名的局部变量? [复制]

如何引用与 C++ 中的局部变量同名的全局变量?

python函数中局部变量与全局变量遵守规则

C语言 若全局变量与局部变量同名,分析结果

JS全局变量是全局对象的属性,函数局部变量为啥就不是函数的属性呢?

C语言面试考点之二