C中的静态变量不“工作”

时间:2016-01-04 15:27:10

标签: c variables static

今天我在编写一个在C中使用static char*的函数时遇到了问题。 让我解释一下:我的函数在我们发送给她的缓冲区中找到'\n',如果'\n'后面有任何文本,它必须将此文本存入名为{{1}的静态变量中}。事实是它存储它,但是在函数的两次调用之间不保留rest的内容。我不明白为什么会发生这种情况,尽管它被声明为静态变量。

到目前为止,这是我的功能: (rest表示该函数未找到return (1)\n\0表示函数找到了return (0),(\n )表示函数找到return -1

EOF

1 个答案:

答案 0 :(得分:3)

一个主要问题是每次调用该函数时,重新分配 NULLrest,而不是最初只是初始化rest

只需删除分配,默认情况下static局部变量为零初始化(即指针将为NULL)。

如果您确实希望显式初始化它,请在声明中执行此操作。 e.g:

static char *rest = NULL;