将字符串设置为'\ 0'与在其他语言中将字符串设置为NULL相同吗? 或者......将字符串设置为'\ 0'意味着该字符串只是空的?
char* str = '\0'
我有不同的函数用于空字符串和空字符串,所以我不想在空字符串上不小心调用我的一个空字符串函数。
答案 0 :(得分:16)
您的行char *str = '\0';
实际 DOES 将str设置为(相当于)NULL。这是因为C中的'\0'
是一个值为0的整数,它是一个有效的空指针常量。但它非常混淆: - )
使用str
(或使用str = "";
完成str = "\0";
(指向)空字符串,这将使str指向 two 零字节)。
注意:请勿将您的声明与第3行中的声明混淆
char *str;
/* ... allocate storage for str here ... */
*str = '\0'; /* Same as *str = 0; */
执行完全不同的操作:它将str
指向的字符串的第一个字符设置为零字节,从而有效地使str
指向空字符串。
术语nitpick:字符串不能设置为NULL; C字符串是一个在某处具有NUL字符的字符数组。没有NUL字符,它只是一个字符数组,不能传递给期望(指向)字符串的函数。 但是,指针是C中唯一可以为NULL的对象。 并且不要将NULL宏与NUL字符混淆: - )
答案 1 :(得分:1)
不,在这种情况下,您指向一个长度为0的实际(非空)字符串。您只需执行以下操作即可将其设置为实际的null:
char* str = NULL;