如果我有静态变量:
static int a;
我想要一个指针指向这个变量,如果指针看起来像:
static int* f;
f=&a;
如果我把这个f返回给一个函数调用,并用一条赋值语句指向一个类型为static int*的指针,这个变量在那个函数中可以访问吗?
还有:
int a;
static int* f;
f=&a; // does this mean now a is a static variable and it will be retained until the program ends?
static int b;
int* c;
c=&n; // is this possible?
int a;
static int* f;
f=&a; // does this mean now a is a static variable and it will be retained until the program ends?
"[D] 这是否意味着现在a是一个静态变量;?
没有。static
属性仅适用于显式定义为static
的变量。在上面的例子中,只有f
是static
。a
的生存期将在其周围作用域结束时结束,从而使指向它的任何指针在该点无效。
static int b;
int* c;
c=&n; // is this possible?
"[I] 这可能吗">
是的,没关系。局部静态变量的寿命是程序的全部寿命。全局变量(静态或非静态(也有完整程序的生命周期。这意味着指向它们的指针将始终有效。
此存储类说明符引用可能有助于通读。