And*_*NER 4 c memory malloc pointers void-pointers
来自Java我很困惑使用Void允许返回值如下:
void *emalloc(size_t s) {
void *result = malloc(s);
if (NULL == result) {
fprintf(stderr, "MEMORY ALLOCATION FAILURE\n");
exit( EXIT_FAILURE );
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
这会返回指向分配内存的指针吗?
Amb*_*ber 15
是的.void*指针基本上是指向内存地址的通用指针,然后通常可以对实际需要的任何类型进行类型转换.
您的问题表明您误读了函数的返回类型.两者之间有很大的不同:
void foo( void ) {}
和
void *bar( void ) {}
foo()不接受任何参数并且不返回值,而bar()不接受任何参数并返回通用指针.在C中,关键字void用于表示通用指针,void*类型的对象可以转换为任何其他对象指针类型而不会丢失信息.