【问题标题】:C Local variable has same name as function - how does it work?C局部变量与函数同名-它是如何工作的?
【发布时间】: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. 我理解正确吗?
  2. 他们从哪里得到这个想法?

谢谢

【问题讨论】:

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

标签: c scope


【解决方案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)。与其说是一个问题,不如说是一种沮丧的表达。谢谢。
猜你喜欢
  • 2014-04-24
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
  • 2016-04-06
  • 1970-01-01
  • 2019-01-12
  • 1970-01-01
相关资源
最近更新 更多