【问题标题】:Variable types global, static , local and auto变量类型 global、static、local 和 auto
【发布时间】:2014-02-11 06:14:47
【问题描述】:

我想开发一个系统来跟踪 系统中频繁发生的事件。我可以通过调用来做到这一点 一个函数,增加之前的值 事件发生计数器,并打印其值然后返回。到 完成这个我需要一个变量,它甚至可以保留它的值 在函数返回之后,以便在下一次调用该函数时 计数器的前一个值可以加一,所以 开。

根据你的意见,我们应该使用哪种类型的变量local, 全局、静态还是自动?用有效的论据支持你的答案。

【问题讨论】:

  • 这是家庭作业吗? (我也没有投反对票,但不要指望这里有人会为你做功课,表现出一些努力)
  • 我没有投反对票,而是帮助投反对票的人说:您需要先学习语言,定义问题并提出解决方案,然后尝试一下。不行的话就过来问问
  • 注意,如果你需要从函数外部访问变量(例如,从另一个函数打印计数器),那么它必须在函数外部定义(但应该是static在 C 文件中,或在 C++ 文件中的匿名命名空间中)。虽然您可以设计一个根据某些参数计算或打印的函数,但这不是一个漂亮的设计——函数的目的严重混淆。
  • 其中一个不属于。 local 不是 C 或 C++ 中的存储类。

标签: c++ c function variables


【解决方案1】:

Local 和 Auto 是一样的第四种是寄存器不是本地的。您不能使用 auto,因为它的变量在每次调用时都会重新定义。

根据您的设计需要,可以是全局的还是静态的。如果您想在其他文件中使用该变量,请使其成为全局变量。

int count; // outside the function calls 

如果您希望它的范围是该函数的本地范围,并在每次发生事件时递增,请使其在函数内部成为静态

static int count = 0; 
// variable is defined only once subsequent calls to it wont redefine it  

如果您希望整个文件访问它而不是外部世界,则可以将其设为全局和静态。

 static int count = 0; // outside of any function calls. 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    相关资源
    最近更新 更多