返回类型的含义(* Read)(void * p,void * buf,size_t * size);

时间:2016-02-04 09:53:50

标签: c pointers visual-studio-2013 void return-type

我正在使用VS 2013和c。

处理现有项目

我来到这个功能,但我不明白这意味着什么:

  int (*Read)(void *p, void *buf, size_t *size);

我所知道的是它是一个返回int指针的函数,但我想知道:

  
      
  1. 为什么void as type意味着在处理参数时(可能是通用指针?)
  2.   
  3. 在这种情况下,(* Read)意味着什么(我认为它是演员!)
  4.   

要真正了解我在这里使用的是完整的依赖项:

typedef struct
{
  #ifdef USE_WINDOWS_FILE
  HANDLE handle;
  #else
  FILE *file;
  #endif
} CSzFile;

typedef struct
{
  int (*Read)(void *p, void *buf, size_t *size);
} ISeqInStream;

typedef struct
{
  ISeqInStream s;
  CSzFile file;
} CFileSeqInStream;

 CFileSeqInStream inStream;

最后的目标是打开一个文件,但为什么所有这些并发症!

任何帮助将不胜感激,谢谢。

4 个答案:

答案 0 :(得分:5)

  

我所知道的是它是一个返回指向int

的指针的函数

不,它是指向函数的指针,它将以下参数类型作为输入:

  • 第一个参数的类型:void*
  • 第二个参数的类型:void*
  • 第三个参数的类型:size_t*

并返回int值作为输出。

答案 1 :(得分:2)

它不是演员,它是声明,并声明Read是指向函数的指针,该函数接受一些参数并返回{{1} }。

至于第一个问题,如果你的意思是int,就像void那样,那么这是一个通用指针,这意味着你可以将任何类型的指针作为参数传递。

答案 2 :(得分:2)

这是一个函数指针,它将指向一个函数,该函数将接受参数(void *p, void *buf, size_t *size)并将值返回为int

这不是演员。

答案 3 :(得分:2)

它是一个名为read的函数指针的定义,它返回一个int。

参数是void类型的指针p,指针buff也关闭类型void和int,可能是buff参数的大小。

我没有doc,但我猜它是从p读取并将结果返回缓冲区。 size参数也是避免缓冲区溢出,返回值是读取的项目数。

您可以使用变量Read作为函数来使用该函数:Read(),即使它实际上是指向函数的指针(至少如果前者已被模仿)。