我在下面有以下代码。但是,我很难确定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;
}
答案 0 :(得分:0)
x和px的生命周期
由于x
和px
是主函数的局部变量,只要主函数运行(这是主函数的性质),程序就会运行,这些变量贯穿始终程序的整个运行时。但这并不能使它们成为全球性的。
x的范围px
x
和px
是main()
的局部变量,这意味着您只能从主函数中直接访问 。
如果此函数碰巧有一个指向其中一个变量的指针,你仍然可以从任何其他函数中间接访问间接,但这与变量本身的范围无关。
为了澄清您对静态变量和自动变量的疑惑,我想参考这个答案,这个答案比我能更好地解释: Difference between static, auto, global and local variable in the context of c and c++