ISOC或C++标准是否指定`constchar*`应该是一个NULL终止的字符串?
我一直看到const char *以这种方式使用,并对libc这种效果做出假设。
在 API 审查期间,我说const char *应该假设是一个NULL终止的字符串,然后有人说它不一定是 - 所以不能做任何假设。
我们仍然可以做出防御性的假设,但我们可以编写更少的代码。
鉴于所有以libc这种方式使用它的函数,C 或 C++ ISO 标准中是否有任何内容表明它必须是NULL终止字符串?
回答
我们可以假设一个指针所const char包含的地址处或开始处的内存是上下文相关的。
const char指针通常用作指向 ASCII 文本(“字符串”)的指针,但并非必须如此;这样的指针也可以指向任意数据或单个字符。
依赖于空终止字符串的 API 必须这样说,他们确实这样做了(例如https://linux.die.net/man/3/strcpy)。
THE END
二维码