Ald*_*dee 60 c pointers function
我对大多数对我来说都不熟悉的函数声明的C程序感到困惑.
void *func_name(void *param){
...
}
Run Code Online (Sandbox Code Playgroud)
什么*意味着这个功能?我对*变量类型中的()的理解是它创建了一个指向另一个变量的指针,因此它能够跟踪后一个变量存储在内存中的地址.但在这个函数的情况下,我不知道这个*星号是什么意思.
NPE*_*NPE 73
星号属于返回类型,而不属于函数名称,即:
void* func_name(void *param) { . . . . . }
Run Code Online (Sandbox Code Playgroud)
这意味着该函数返回一个void 指针.
Vin*_*Pii 18
*表示函数的返回类型,即void *.
声明指针变量时,将*接近变量名或变量类型放在同一位置:
int *a;
int* a;
Run Code Online (Sandbox Code Playgroud)
我个人认为第一选择更清楚,因为如果你想使用,分隔符定义多个指针,你将不得不重复*每次:
int *a, *b;
Run Code Online (Sandbox Code Playgroud)
在这种情况下使用"接近类型语法"可能会产生误导,因为如果你写:
int* a, b;
Run Code Online (Sandbox Code Playgroud)
您正在声明一个指向int(a)和int(b)的指针.
所以,你会发现函数返回类型中的语法!
x4u*_*x4u 10
在*属于返回类型.此函数返回void *一个指向未指定类型的某个内存位置的指针.
指针本身就是一个变量类型,它将某个内存位置的地址作为其值.C中的不同指针类型表示您希望驻留在指针变量引用的内存位置的不同类型.所以a int *应该指的是一个可以解释为a的位置int.但是a void *是一种指针类型,它指的是未指定类型的内存位置.您必须转换此类void指针才能访问其引用的内存位置的数据.