【问题标题】:What has localness got to do with changing names of argc and argv?本地性与更改 argc 和 argv 的名称有什么关系?
【发布时间】:2020-05-03 12:02:38
【问题描述】:

这个问题可能很愚蠢。 C standard:(referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared) 变量 argcargvmain 函数的 localness 与更改它们的名称有什么关系? — 我知道它们的名称可以更改 — 我不理解标准中关于变量局部性的声明。请帮帮我。

【问题讨论】:

  • 想象一下,您将不得不 #include <stdarguments.h> 并使用 global 外部 _Argc_Argv 符号来访问参数。

标签: c local argv argc


【解决方案1】:

“本地性”是指在“whatever”范围内发生的事情不会影响世界其他地方。就函数参数的名称而言,这些名称不会暴露在函数之外。暴露的(不同程度取决于实现和系统标准)是函数签名(又名原型)。

术语“本地性”并非特定于main。每个函数都有一个本地范围。 main 也是如此。并且其int(char*)[] 类型的参数对外界来说是不可见的。

【讨论】:

  • 我的问题是:What has the localness to the main function of the variables argc and argv got to do with changing their names? 仅仅因为他们是 main 的本地人,这意味着他们的名字可以改变吗?
  • @NirajRaut “变量 argc 和 argv 的主要功能的局部性与更改它们的名称有什么关系?”在我看来,答案,答案?你能澄清一下你对什么感到困惑吗?
  • @PiRocks 请用清晰的语言向我解释答案。我很愚蠢,无法理解。
  • @NirajRaut 这些名称与main 之外的任何其他代码无关。您可以随意命名它们。 main 的来电者并不关心这些名字。从main 调用的其他函数不关心给main 的参数名称。
  • @NirajRaut 将函数想象成一个带有“墙壁”的盒子,它由一种特殊的阴影图形屏幕制成。在这个盒子里,躺在地板上并附在墙上的是形状奇特的物体。盒子里的物品有名字,上面写着一个特殊的in。如果你在盒子里,你可以看到写在物品上的名字。但是从外面你只能“看到”附着在墙上的物体的阴影轮廓,而看不到名称。如果您在框内,您会看到本地视图。
【解决方案2】:

变量 argc 和主函数的局部性是什么? argv 与更改他们的名字有关吗? ——我知道他们的名字 可以更改-我不理解标准中的声明 关于变量的局部性。

我认为你只是忽略了显而易见的事情。该标准试图解决的问题是“我需要使用名称argcargv 作为main() 的参数吗?”我想我实际上已经在 SO 上看到了这个问题,尽管我无法在快速搜索中找到它。您似乎假设您当然可以随意命名参数,因为它们是函数参数。您所询问的条款只是肯定了这一点。

我猜你不理解阅读该标准的人可能会带来不同的印象,而且你似乎特别被标准命名为main 所迷惑。这一切都包含在以下事实中:main 是标准指定程序(与 C 实现相反)必须提供的唯一功能,并且标准为main 的签名指定了两个特定选项程序员必须从中选择。如果程序要严格遵守语言规范,则不可能有任何变化。您询问的条款只是澄清了使用不同的参数名称并不构成为此目的对签名进行有意义的更改。

【讨论】:

猜你喜欢
  • 2018-04-15
  • 1970-01-01
  • 2016-08-11
  • 2022-06-20
  • 2014-08-04
  • 2020-11-03
  • 2020-05-24
  • 2017-06-18
相关资源
最近更新 更多