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局部变量与函数同名-它是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章