我不明白这个(size_t)_length返回语句

时间:2016-02-12 03:53:37

标签: c return-value

我正在为我所在的类编写内存分配替换API,并且下面有一个名为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);
}

2 个答案:

答案 0 :(得分:4)

  1. 无论是谁编写该函数,都认为调用名称_length是个好主意。它没有任何特殊意义。

  2. 如果表达式中有(Typename)variablename,则称为强制转换。在将_length传递给size_t函数之前,此代码会将malloc转换为malloc类型。

  3. 这实际上是多余的,因为在调用malloc时会隐式发生相同的转换。 (除非我们在C89中并且#include <stdlib.h>从未被声明,但是应该由let appDelegate = AppDelegate()修复,而不是通过插入此强制转换来修改

答案 1 :(得分:0)

下划线只是变量名称的一部分。我可以定义变量x以及_x或x __。

关于第二个问题:这是从int到size_t的显式类型转换。

我建议您在C中阅读一些关于类型转换的内容,重要的是要理解。