C - 函数和void变量类型的指针?

Paw*_*wan 0 c c++

请解释这样的原型是什么意思

void *runner(void *param)
Run Code Online (Sandbox Code Playgroud)
  1. 变量类型如何无效?
  2. *runner的函数名称是什么意思?
  3. 它是函数的地址吗?

Chr*_*rle 9

首先,void* runner和之间绝对没有区别void *runner.该函数的名称是runner.其次,可以声明一个函数void,它只是意味着它根本不返回任何东西.

但是这个签名是不同的.它返回一个void*,它只是指向未指定数据类型的指针.或者更容易思考它,它返回一个内存地址.

同样的void *param,它只是接受一个内存地址.

编辑

这可能会让它更清晰一些:

void func(void *ptr);   // take in a generic memory address, return nothing
void *func(void *ptr);  // take in a generic memory address, return similar
void *func(void);       // Function takes no parameters (necessary in C, optional in C++)
void *func(void param); // Invalid! As you guessed, this would be pointless.
void *func();           // Preferred syntax in C++, function takes in nothing and returns a generic memory address
                        // In C this means it takes an undetermined number of arguments

void func();            // In C++: function takes in nothing, returns nothing
                        // In C: function takes in an undetermined number of arguments, returns nothing
Run Code Online (Sandbox Code Playgroud)