我们什么时候初始化数据类型char*,什么时候不初始化?
When we initialize the data type char* and when not?
首先看下面的简单代码:
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);
}
函数 strtok()
returns 数据类型 char*
正如您所看到的,我们创建了一个名为 token
的变量,该变量未初始化。
现在,看下一段代码:
char *buff;
int num = 500;
sprintf(buff, "%d", num);
前面代码的结果是错误的uninitialized local variable 'buff'
。
我的问题是,为什么在第一个代码中没有出现任何问题,而在第二个代码中出现错误?
因为在第一个片段中,您 执行 通过调用 strtok
并将调用结果分配给变量来初始化变量 token
。
在第二个示例中,您未初始化变量 buff
。
您可以在定义时使用实际初始化来初始化局部变量。 或通过赋值给别处的变量。重要的是你在之前你以任何其他方式使用变量。
首先看下面的简单代码:
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);
}
函数 strtok()
returns 数据类型 char*
正如您所看到的,我们创建了一个名为 token
的变量,该变量未初始化。
现在,看下一段代码:
char *buff;
int num = 500;
sprintf(buff, "%d", num);
前面代码的结果是错误的uninitialized local variable 'buff'
。
我的问题是,为什么在第一个代码中没有出现任何问题,而在第二个代码中出现错误?
因为在第一个片段中,您 执行 通过调用 strtok
并将调用结果分配给变量来初始化变量 token
。
在第二个示例中,您未初始化变量 buff
。
您可以在定义时使用实际初始化来初始化局部变量。 或通过赋值给别处的变量。重要的是你在之前你以任何其他方式使用变量。