函数名前的星号函数是什么?

我一直困惑于我看到的大多数C程序有我不熟悉的函数声明。

void *func_name(void *param){ ... } 

*暗示的function是什么? 我对variablestypes( * )的理解是,它创build了一个指向另一个variables的指针,因此它能够跟踪后面variables存储在内存中的地址。 但是在这个函数的情况下,我不知道这个*星号意味着什么。

星号属于返回types,而不属于函数名称,即:

 void* func_name(void *param) { . . . . . } 

这意味着该函数返回一个空指针

*表示函数的返回types,即void *

当你声明一个指针variables时,把*放在variables名或者variablestypes上是一样的:

 int *a; int* a; 

我个人认为第一个select更清楚,因为如果你想使用,分隔符定义多个指针,你将不得不重复*每次:

 int *a, *b; 

在这种情况下使用“close to type syntax”可能会产生误导,因为如果你写:

 int* a, b; 

你正在声明一个int( a )和一个int( b )的指针。

所以,你会发现在函数返回types的语法呢!

*属于返回types。 这个函数返回void * ,一个指向未指定types的内存位置的指针。

指针本身就是一个variablestypes,它的某个内存位置的地址就是它的值。 C中不同的指针types表示您希望驻留在指针variables指向的内存位置的不同types。 所以一个int *预计会引用一个可以被解释为int 。 但是void *是一个指向未指定types的内存位置的指针types。 你将不得不施放这样一个无效指针,以便能够访问它指向的内存位置的数据。

这意味着该函数返回一个void*