【发布时间】:2020-09-07 23:14:38
【问题描述】:
所以我正在创建一个字符到字符串的转换器,并且我正在使用malloc 创建一个字符串。我知道我需要为空终止字符\0 腾出空间。我也这样做char *example = malloc(sizeof(char) + 1);(即\0占用1个字节)或char *example = malloc(2 * sizeof(char));(即\0占用一个字符的大小)。那么\0 占用了多少空间呢?
编辑:我才意识到是一样的,谢谢大家!
【问题讨论】:
-
这些是等价的,因为
sizeof(char) == 1(总是)。 -
另外,空终止符是一个字符。
-
(不要这样做
sizeof('\0'),因为奇怪的是,字符文字不是字符。) -
'\0'是一个字符常量。它的类型为int,大小为sizeof(int)。char ch = '\0';将值 0 分配给ch。ch的大小为sizeof(ch)或 1。 -
我知道这个问题被标记为“C”,但只是为了避免有人在 C++ 中被抛弃,在 C++ 中
sizeof('\0') ==1(与 C 不同)。
标签: c null-terminated