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

时间:2012-01-18 13:49:57

标签: c function pointers

我对大多数对我有不熟悉的功能声明的C程序的看法感到困惑。

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

*对函数的含义是什么?我对变量类型(*)的理解是它创建了一个指向另一个变量的指针,因此它能够跟踪后一个变量存储在内存中的地址。但是在这个函数的情况下,我不知道这个*星号是什么意思。

4 个答案:

答案 0 :(得分:69)

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

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

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

答案 1 :(得分:17)

*指的是函数的返回类型,即void *

当你声明一个指针变量时,将*靠近变量名或变量类型是一回事:

int *a;
int* a;

我个人认为第一选择更清晰,因为如果您想使用,分隔符定义多个指针,则每次都必须重复*

int *a, *b;

在这种情况下使用“接近类型语法”可能会产生误导,因为如果你写:

int* a, b;

您正在声明指向int(a)和int(b)的指针。

所以,你会在函数返回类型中找到语法!

答案 2 :(得分:10)

*属于返回类型。此函数返回void *,指向未指定类型的某个内存位置的指针。

指针本身就是一个变量类型,它将某个内存位置的地址作为其值。 C中的不同指针类型表示您希望驻留在指针变量引用的内存位置的不同类型。因此,int *应该引用可以解释为int的位置。但是void *是一种指针类型,它指的是未指定类型的内存位置。您必须转换此类void指针才能访问它所引用的内存位置的数据。

答案 3 :(得分:5)

这意味着该函数返回void*