变量名能和函数名相同吗?

kukle 2007-05-14 01:06:39
c/c++变量名能和函数名相同吗?why?
double fac(int n)
{
int i=1;
double fac=1;
for(i=1;i<=n;++i)
{
fac=fac*i;
}
return(fac);
}

int main()
{
int n;
double fac;
scanf("%d",&n);
fac=fac(n);
printf("%.3f",fac);
return 0;
}
...全文
3223 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
todototry 2007-05-18
  • 打赏
  • 举报
回复
可以相同,在编译器填写符号table的时候,类型写的变量
函数以区分
ammana_babi 2007-05-18
  • 打赏
  • 举报
回复
写代码的可贵之处就是规范性,老老实实的写代码,对你而言是没有坏处的。

过多的去抠语法,吃亏的肯定是你自己,大部分编译器并不是全部支持 C 的全部语法的。

刚开始写代码应该在健壮性、可读性、效率上苦下功夫,很多东西自然而然就能体会。

慢慢的你所关注的就不再是这些琐碎的语法,而是整体的架构。这是一个质的提高。

这是别人告诉俺的,不过不幸的是俺还是处在初级阶段,遗憾!!!
  • 打赏
  • 举报
回复
不太清楚,不过最好不要同名了.
  • 打赏
  • 举报
回复
blue_zyb 2007-05-14
  • 打赏
  • 举报
回复
全局变量名和函数名不能相同。此外,若局部变量名与全局变量名或函数名相同,则在该局部变量作用范围内不能使用相应的全局变量或函数。
--------------------------------------------
也就是在同一个作用域范围内不能引入两个相同的名字,因为会引起解析冲突。

若局部变量名与全局变量名或函数名相同,则在该局部变量作用范围内,也不是不能使用对应的全局量,可以用block

比如 int i = 0;
int main()
{
int i;

// 此处只有local 的i可见

// open a new block
{
// 此处则只有全局的i 可见
}
}
wing831223 2007-05-14
  • 打赏
  • 举报
回复
此时编译器无法把fac(n)推演成一个函数调用
kukle 2007-05-14
  • 打赏
  • 举报
回复 2
我找到答案了。

全局变量名和函数名不能相同。此外,若局部变量名与全局变量名或函数名相同,则在该局部变量作用范围内不能使用相应的全局变量或函数。
kukle 2007-05-14
  • 打赏
  • 举报
回复
why?
believefym 2007-05-14
  • 打赏
  • 举报
回复
让编译器告诉你不是更好

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧