c - '\0' 是否占用字符的大小?- C
问题描述
所以我正在创建一个 char 到 string 转换器,我正在使用malloc
. 我知道我需要为空终止字符腾出空间\0
。我也这样做char *example = malloc(sizeof(char) + 1);
(即\0
占用 1 个字节)或char *example = malloc(2 * sizeof(char));
(即\0
占用一个字符的大小)。那么占用多少空间\0
呢?
编辑:我刚刚意识到它是一样的,谢谢大家!
解决方案
只是为了强调评论中指出的一些内容:
[确实]
'\0'
占用 1 个字节 [或者它] 占用了char
这些是相同的,因为 achar
是一个字节定义。 sizeof(char) == 1
无论您对 C 的实现是什么,都将永远是正确的。
malloc
写电话的惯用方式是
malloc(1 + 1); /* one character, + terminating NUL */
您唯一应该sizeof(char)
在代码中编写的情况是,如果您需要强制表达式具有 type ,但由于某些奇怪的原因size_t
您不能包含。stddef.h
(尽管不太可能,achar
大于一个八位字节,也就是说,它包含多于 8 位。例如,PDP-10 的 C 实现可能会char
包含 9 位,并且有一直是面向字的处理器,char
必须是 16 位或 32 位。在这样的实现中,仍然sizeof(char)
是1,并且 a仍然被认为与“字节”相同,但宏(定义在 中)将有一个值大于 8。char
CHAR_BIT
limits.h
(不可能包含少于8 位,因为要求 achar
能够表示数字范围 -127 ≤ x ≤ +127,这不适合 7 位。)char
推荐阅读
- node.js - 使用 react 和 node 进行 Firebase 身份验证
- python - 如何在 Matplotlib Finance 中的图表上绘图?
- nginx - Nuxtjs 和 Nginx 代理下载没有“http://”的文件
- keycloak - 在 Keycloak 中,当 user2 尝试使用 IDP 登录页面登录时,如何自动注销(使会话过期)user1?
- c++ - 调用类的成员函数后的垃圾值
- vimeo - 将公司品牌添加到 Vimeo 密码屏幕
- javascript - 我可以通过单击图像进行缩放,但我无法将自己定位在指针单击的位置
- sql - 用于获取用户、员工、公司的“计算”列 is_admin 的 SQL 查询
- python - 字符串索引必须是整数 - 它们是
- for-loop - 如何在数据框的名称()上运行循环以在 R 中创建新的数据框?