当初始化数据类型char*和非char*时



首先,看看下面的简单代码:

char str[80] = "This is - my text - for test";
const char s[2] = "-";
char *token;
token = strtok(str, s);
while (token != NULL) {
    printf(" %sn", token);   
    token = strtok(NULL, s);
}

函数strtok()返回数据类型char*,如您所见,我们创建了一个名为token的变量,该变量未初始化。

现在,看下一段代码:

char *buff;
int num = 500;
sprintf(buff, "%d", num);

前面代码的结果是一个错误uninitialized local variable 'buff'
我的问题是,为什么在第一个代码没有发生任何问题,而在第二个代码发生了一个错误?

因为在第一个代码片段中,您通过调用strtok并将调用的结果赋值给变量来初始化变量token

在第二个示例中,您保留变量buff未初始化。

可以在定义时用实际初始化来初始化局部变量。通过赋值给其他地方的变量。重要的是,在以任何其他方式使用该变量之前,要先进行初始化或赋值

最新更新