我试图理解下面的代码,但是我对"\0"
和'\0'
感到困惑。我知道它很傻,但是请帮我
#define MAX_HISTORY 20
char *pStr = "\0";
for(x=0;x<MAX_HISTORY;x++){
str_temp = (char *)malloc((strlen(pStr)+1)*sizeof(char));
if (str_temp=='\0'){
return 1;
}
memset(str_temp, '\0', strlen(pStr) );
strcpy(str_temp, pStr);
最佳答案
双引号创建字符串文字。因此"\0"
是一个字符串文字,其中包含单个字符'\0'
,外加第二个字符作为终止符。这是一种写空字符串的愚蠢方式(""
是惯用方式)。
单引号用于字 rune 字,因此'\0'
是int
大小的值,表示编码值为0的字符。
代码中的Nits:
malloc()
的返回值。sizeof (char)
缩放分配,该分配始终为1,因此不会增加任何值。 NULL
进行比较。 关于c - "\0"和 '\0'之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40129319/