函数名前的星号函数是什么?
我一直困惑于我看到的大多数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*
。