对于我的一个项目,我使用指针指向浮点类型全局变量。我想知道如果我在函数中将其定义为静态vs本地指针,那么一个是比另一个更好的定义。
对于Ex:
float a;
float b;
void foo(void)
{
static float *ptra;
float *ptrb;
ptra = &a;
ptrb = &b;
}
答案 0 :(得分:2)
static
指针用于实现一个函数,该函数将same buffer
返回给程序,并在第一次调用时分配它
答案 1 :(得分:1)
除了
ptrb = &b;
毫无意义(范围等......)
为什么要使用静态指针?
它没有用处,编码风格很差。
答案 2 :(得分:1)
如果使用非static
定义涵盖所有需求,请使用此选项。如果没有,请使用static
。
答案 3 :(得分:0)
static
是持久的,所以如果你在一个函数中声明它,当你再次调用该函数时,该值与上次相同。
因此,无论何时调用函数,都需要使用相同的值。
关于本地指针,如果指针指向功能块中的局部变量,那么变量的外部功能块范围结束,指针变为悬空指针。因此访问这样的指针会导致分段错误。
答案 4 :(得分:0)
我认为另一个答案是正确的。我会将其添加为解释:静态指针(或变量)具有与全局指针(或变量)相同的生命周期,除了它的“范围”仅限于该函数。
它不仅用于返回相同的缓冲区(仅一个用例)。您也可以将它用于其他情况。例如,如果要在整个程序生命周期中实现全局计数器或只保存某些状态(对递归函数有用)。
根据我的个人经验,您只能在极少数情况下使用它。