在C中将字符串设置为null

时间:2011-04-09 21:55:11

标签: c

将字符串设置为'\ 0'与在其他语言中将字符串设置为NULL相同吗? 或者......将字符串设置为'\ 0'意味着该字符串只是空的?

char* str = '\0'

我有不同的函数用于空字符串和空字符串,所以我不想在空字符串上不小心调用我的一个空字符串函数。

2 个答案:

答案 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;