我知道是否需要终止char的指针。 例如:
char *pointer;
[...]
pointer[i] = 'a';
[...]
pointer[i] = 'b';
最后我要加上这个? (最后一个):
pointer[i] = '\0';
谢谢。
答案 0 :(得分:2)
我知道是否需要终止char的指针。
您无法终止指针,无论它指向何种类型。
我想你的意思是问是否有必要终止指针所指向的char
数组。这是一个重要的区别,因为指针是与它们指向的对象(如果有的话)分离且独立的对象。许多C新手似乎都失去了这种情况,对此的误解导致了进一步的混乱和错误。
答案是,这取决于你打算如何使用指针和指针。在您打算将指针对象用作C字符串的情况下,无论是通过手中的指针还是通过指向同一对象的其他指针,是的,您需要终止数组。如果提供的字符串未以空字符('\0'
)终止,则用于处理字符串的所有标准库函数都具有未定义的行为。
另一方面,如果你以其他方式使用底层数组 - 例如,一个已知长度的布尔标志数组或一个查找表 - 那么不,你不需要一个终结符端。
答案 1 :(得分:0)
如果指向char的指针没有以\ 0结尾,它仍然可能会打印预期的输出,因为跟随你的字符串是你内存中的一个不可打印的字符。这是一个非常讨厌的错误,因为当你可能没想到它时它可能会爆炸。始终使用'\ 0'终止字符串。