确定指针变量的范围和生命周期,只是变量

时间:2017-11-09 02:02:03

标签: pointers scope lifetime

我在下面有以下代码。但是,我很难确定x和* px的寿命和范围。不过,我确实知道这些术语的概念。 x和* px应该被视为局部变量,因为它不是在main函数或全局函数之外声明的,因为它在开始时被声明并且最终会到达结尾吗? 对静态和自动以及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;
}

1 个答案:

答案 0 :(得分:0)

x和px的生命周期

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

x的范围px

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

如果此函数碰巧有一个指向其中一个变量的指针,你仍然可以从任何其他函数中间接访问间接,但这与变量本身的范围无关。

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

相关问题