字符数组嗨最近我看到网上很多的代码(也SO;),如:分配使用malloc
char *p = malloc(sizeof(char) * (len + 1));
为什么的sizeof(字符)?这不是必要的,不是吗?还是仅仅是一个风格问题? 它有什么优势?
字符数组嗨最近我看到网上很多的代码(也SO;),如:分配使用malloc
char *p = malloc(sizeof(char) * (len + 1));
为什么的sizeof(字符)?这不是必要的,不是吗?还是仅仅是一个风格问题? 它有什么优势?
是的,这是一个风格问题,因为你期望sizeof(char)
永远是一个。
另一方面,在做malloc
时,使用sizeof(foo)
是一个非常成语,最重要的是它使代码自行记录。
也许更好的维护。如果您是从char
到wchar
切换,你会切换到
wchar *p = malloc(sizeof(wchar) * (len + 1));
没有太多的想法。鉴于转换语句char *p = malloc( len + 1 );
需要更多思考。这是关于减少精神开销。
而作为@Nyan暗示的评论,你也可以实现零终止字符串做
type *p = malloc(sizeof(*p) * (len + 1));
和
type *p = malloc(sizeof(*p) * len));
普通缓冲区。
它用于自行记录操作。该语言将字符定义为一个字节。它没有指定在该字节中有多少个位,因为一些机器具有8,12,16,19或30位最小可寻址单位(或更多)。但是char总是一个字节。
该规范规定字符是1个字节,因此它是严格可选的。我个人总是包括sizeof
出于一致性的目的,但它并不重要
重复http://stackoverflow.com/questions/1011806/is-it-necessary-to-multiply-by-sizeof-char-当 - 操纵记忆虽然我不同意在那里接受的答案(我宁愿省略sizeof(char)) – user85509 2010-06-25 04:40:45