今天当我阅读别人的代码时,我看到了类似的void *func(void* i);东西,这void*对于函数名称和变量类型分别意味着什么?
另外,什么时候需要使用这种指针以及如何使用它?
我有一个类,它包含一个"错误"函数,可以格式化一些文本.我想接受可变数量的参数,然后使用printf格式化它们.
例:
class MyClass
{
public:
void Error(const char* format, ...);
};
Run Code Online (Sandbox Code Playgroud)
Error方法应该接受参数,调用printf/sprintf来格式化它然后用它做一些事情.我不想自己编写所有格式,因此尝试找出如何使用现有格式是有意义的.
我对大多数对我来说都不熟悉的函数声明的C程序感到困惑.
void *func_name(void *param){
...
}
Run Code Online (Sandbox Code Playgroud)
什么*意味着这个功能?我对*变量类型中的()的理解是它创建了一个指向另一个变量的指针,因此它能够跟踪后一个变量存储在内存中的地址.但在这个函数的情况下,我不知道这个*星号是什么意思.
char x = 'G';
char *p = &x;
printf ("Address of x: %p\n", p);
printf ("Address of x: %p\n", (void*)p);
Run Code Online (Sandbox Code Playgroud)
谁能告诉我究竟(void*)p意味着什么?我知道它是一样的p,因为它也给了我地址x,但为什么写的是(void*)p?
我找到了这个函数定义
void *func(void *param) {
}
Run Code Online (Sandbox Code Playgroud)
实际上,我对这个函数定义有一些困惑.void*在函数的返回类型和参数中的含义是什么.我是C的初学者.所以请不要介意.谢谢
void *func(void *param) {
int s = (int)param;
....
}
Run Code Online (Sandbox Code Playgroud)
好好看看我发现的上述程序.我认为应该是这样的
int *s = (int *)param;
Run Code Online (Sandbox Code Playgroud)
不是吗?我很迷惑
在C中,函数指针(void*)在做什么:
int (*fn) (void*)
Run Code Online (Sandbox Code Playgroud)
如果参数为空,那么它应该是:
int (*fn) ()
Run Code Online (Sandbox Code Playgroud)
我的理解是void*大块的记忆. void* mem意味着mem指向一大块记忆.但什么是(void*)没有名字?
malloc功能声明:
void *malloc(size_t size);
Run Code Online (Sandbox Code Playgroud)
在这里,malloc返回void指针.那么,A void函数什么都不返回呢
为什么我们将malloc(函数调用)值赋给指针?
例如:
int *ptr;
ptr = malloc(10 * sizeof (*ptr));
^^^
Run Code Online (Sandbox Code Playgroud)
什么是返回值来自malloc()???