【问题标题】:C How to terminate a pointer of char [duplicate]C如何终止char的指针[重复]
【发布时间】:2016-12-19 14:03:50
【问题描述】:

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

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

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

pointer[i] = '\0';

谢谢。

【问题讨论】:

  • 简短回答,是的。它对于获取大小很有用,并且在许多 C 函数中使用。
  • 你试过了吗?发生了什么?

标签: c string pointers char


【解决方案1】:

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

你不能终止一个指针,不管它指向什么类型。

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

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

另一方面,如果您以其他方式使用底层数组(例如,已知长度的布尔标志数组或查找表),那么不,您不需要在结束。

【讨论】:

  • 指向的数组包含我要分析的括号。我必须把'\0'
【解决方案2】:

如果指向 char 的指针没有以 \0 结尾,它可能仍会打印预期的输出,因为在您的字符串后面是内存中不可打印的字符。不过,这是一个非常讨厌的错误,因为它可能会在您意想不到的时候爆炸。始终以 '\0' 结束字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    相关资源
    最近更新 更多