C如何终止char的指针

时间:2016-12-19 14:03:50

标签: c string pointers char

我知道是否需要终止char的指针。 例如:

char *pointer;
[...]
pointer[i] = 'a';
[...]
pointer[i] = 'b';

最后我要加上这个? (最后一个):

pointer[i] = '\0';

谢谢。

2 个答案:

答案 0 :(得分:2)

  

我知道是否需要终止char的指针。

您无法终止指针,无论它指向何种类型。

我想你的意思是问是否有必要终止指针所指向的char数组。这是一个重要的区别,因为指针是与它们指向的对象(如果有的话)分离且独立的对象。许多C新手似乎都失去了这种情况,对此的误解导致了进一步的混乱和错误。

答案是,这取决于你打算如何使用指针和指针。在您打算将指针对象用作C字符串的情况下,无论是通过手中的指针还是通过指向同一对象的其他指针,是的,您需要终止数组。如果提供的字符串未以空字符('\0')终止,则用于处理字符串的所有标准库函数都具有未定义的行为。

另一方面,如果你以其他方式使用底层数组 - 例如,一个已知长度的布尔标志数组或一个查找表 - 那么不,你不需要一个终结符端。

答案 1 :(得分:0)

如果指向char的指针没有以\ 0结尾,它仍然可能会打印预期的输出,因为跟随你的字符串是你内存中的一个不可打印的字符。这是一个非常讨厌的错误,因为当你可能没想到它时它可能会爆炸。始终使用'\ 0'终止字符串。