[英]I don't understand this (size_t)_length return statment
我正在为我所在的类编写一个内存分配替换API,并且下面有一个名为my_malloc()
的函数( my_malloc()
教授概述了基本框架),该函数返回我不了解的内容。
有人可以启发我为什么_length
参数开头有下划线,为什么return语句(size_t)
与_length不分开?
Addr my_malloc(unsigned int _length) {
/* This preliminary implementation simply hands the call over the
the C standard library!
Of course this needs to be replaced by your implementation.
*/
return malloc((size_t)_length);
}
编写该函数的人都认为,最好将名称命名为_length
。 它没有任何特殊意义。
当表达式中具有(Typename)variablename
,它称为强制转换 。 在将_length
传递给malloc
函数之前,此代码将_length
转换为size_t
类型。
这实际上是多余的,因为在调用malloc
时隐式发生了相同的转换。 (除非我们在C89中,并且从未声明过malloc
,但这应该通过#include <stdlib.h>
,而不是通过插入此强制转换来解决)
下划线只是变量名称的一部分。 我可以定义变量x以及_x或x__。
第二个问题:这是一个从int强制转换为size_t的显式类型。
我建议您阅读一些有关C语言中类型转换的知识,了解这一点很重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.