静态vs本地定义的指针

时间:2015-08-08 12:40:07

标签: c

对于我的一个项目,我使用指针指向浮点类型全局变量。我想知道如果我在函数中将其定义为静态vs本地指针,那么一个是比另一个更好的定义。

对于Ex:

float a; 
float b;
void foo(void)
{
  static float *ptra;
  float *ptrb;   

  ptra = &a;
  ptrb = &b;
}  

5 个答案:

答案 0 :(得分:2)

static指针用于实现一个函数,该函数将same buffer返回给程序,并在第一次调用时分配它

答案 1 :(得分:1)

除了

ptrb = &b;

毫无意义(范围等......)

为什么要使用静态指针?

它没有用处,编码风格很差。

答案 2 :(得分:1)

如果使用非static定义涵盖所有需求,请使用此选项。如果没有,请使用static

答案 3 :(得分:0)

static是持久的,所以如果你在一个函数中声明它,当你再次调用该函数时,该值与上次相同。

因此,无论何时调用函数,都需要使用相同的值。

关于本地指针,如果指针指向功能块中的局部变量,那么变量的外部功能块范围结束,指针变为悬空指针。因此访问这样的指针会导致分段错误。

答案 4 :(得分:0)

我认为另一个答案是正确的。我会将其添加为解释:静态指针(或变量)具有与全局指针(或变量)相同的生命周期,除了它的“范围”仅限于该函数。
它不仅用于返回相同的缓冲区(仅一个用例)。您也可以将它用于其他情况。例如,如果要在整个程序生命周期中实现全局计数器或只保存某些状态(对递归函数有用)。

根据我的个人经验,您只能在极少数情况下使用它。

相关问题