我对在大多数C程序上看到的对我来说不熟悉的函数声明感到困惑。
void *func_name(void *param){
...
}
*
该功能意味着什么?我对*
变量类型()的理解是,它创建了一个指向另一个变量的指针,因此它可以跟踪将后一个变量存储在内存中的地址。但是在这种情况下,我不知道这个*
星号意味着什么。
我对在大多数C程序上看到的对我来说不熟悉的函数声明感到困惑。
void *func_name(void *param){
...
}
*
该功能意味着什么?我对*
变量类型()的理解是,它创建了一个指向另一个变量的指针,因此它可以跟踪将后一个变量存储在内存中的地址。但是在这种情况下,我不知道这个*
星号意味着什么。
int *a
它相同的是指向整数,而不是a是整数指针类型。
Answers:
星号属于返回类型,而不属于函数名称,即:
void* func_name(void *param) { . . . . . }
这意味着该函数返回一个void指针。
*表示函数的返回类型,即void *
。
声明指针变量时,*
将变量名称或变量类型放在紧邻位置是相同的:
int *a;
int* a;
我个人认为首选更为明确,因为如果要使用,
分隔符定义多个指针,则*
每次都必须重复:
int *a, *b;
在这种情况下,使用“接近类型语法”可能会产生误导,因为如果您编写:
int* a, b;
您正在声明一个指向int(a
)和int(b
)的指针。
因此,您也会在函数返回类型中找到该语法!
if you want to define multiple pointers using the , operator, you will have to repeat the * each time: int *a, *b;
在这种情况下,逗号是分隔符,而不是运算符。
void
。
void* func_name
or旁边将是一个非常有趣的问题void * func_name
。如果他们能提出一个合理的理由,我会印象深刻。