Lio*_*ing -2 c++ variable-initialization
首先,看看下面的简单代码:
char str[80] = "This is - my text - for test";
const char s[2] = "-";
char *token;
token = strtok(str, s);
while (token != NULL) {
printf(" %s\n", token);
token = strtok(NULL, s);
}
Run Code Online (Sandbox Code Playgroud)
该函数strtok()返回数据类型char*,如您所见,我们创建了一个名为token该变量未初始化的变量.
现在,看看下一个代码:
char *buff;
int num = 500;
sprintf(buff, "%d", num);
Run Code Online (Sandbox Code Playgroud)
上一个代码的结果是错误uninitialized local variable 'buff'.
我的问题是,为什么在第一个代码中没有出现任何问题,而在第二个代码中发生了错误?
因为在第一个片段,你做初始化变量token,通过调用strtok和分配的调用变量的结果.
在第二个示例中,您将变量保持buff未初始化状态.
您可以在定义时使用实际初始化初始化局部变量.或者通过在其他地方分配变量.重要的是,在以任何其他方式使用变量之前,请执行此初始化或赋值.
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |