【问题标题】:Determining scope and lifetime of pointer variable and just variable确定指针变量和变量的范围和生命周期
【发布时间】:2017-11-09 02:02:03
【问题描述】:

我在下面有以下代码。但是,我很难确定 x 和 *px 的生命周期和范围。不过,我确实知道这些术语的概念。 x 和 *px 是否应该被视为局部变量,因为它没有在主函数之外声明,或者应该被视为全局变量,因为它是在开始时声明的,并且无论如何都要结束? 对静态和自动以及 x 和 px 也感到困惑.....

#include <stdio.h> 
int main(void)
{
    double x=3.14, *px = &x;
    printf("ADDR:%p\n", &x);
    printf("ADDR:%p\n", &px);

    return 0;
}

【问题讨论】:

    标签: pointers scope lifetime


    【解决方案1】:

    x 和 px 的生命周期

    由于xpx是主函数的局部变量,只要主函数运行,程序就会运行(这是主函数的本质),这些变量存在于整个运行时该程序。不过,这并不能使它们成为全球性的。

    x an px的范围

    xpxmain() 的局部变量,这意味着您只能从主函数内部直接访问它们。

    如果该函数恰好有一个指向这些变量之一的指针,您仍然可以从任何其他函数间接访问它们,但这与变量本身的范围无关。 p>


    为了澄清您对静态变量和自动变量的困惑,我想参考这个答案,它比我能更好地解释这一点: Difference between static, auto, global and local variable in the context of c and c++

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-23
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 2015-09-26
      相关资源
      最近更新 更多