C标准不允许将函数指针转换为void*。您只能转换为其他函数指针类型。在C11标准6.3.2.3§8中:指向一种类型的函数的指针可以转换为指向另一种类型的函数的指针,然后再次返回重要的是,在使用指针调用该函数之前,必须先强制转换回原始类型(从技术上讲,是兼容类型。在6.2.7中定义为“ compatible” )。请注意,由于使用的...
void (*func_ptr)(int) = ...; void (*new_func_ptr)(int) = reinterpret_cast<void (*)(int)>(func_ptr); 同样需要注意类型之间的兼容性。 总之,将函数指针转换为另一种类型的指针是一种常见的操作,但是需要注意类型之间的兼容性,以避免未定义的行为。 相关搜索: 将void指针(数据)转换为函数指针 将...
其次,你为什么一定需要这样的代码呢?似乎这表明你在存储函数指针时,擦除了函数签名特征;这样的话,代...
C标准不允许将函数指针转换为void*。您只能转换为其他函数指针类型。在C11标准6.3.2.3§8中: 指向一种类型的函数的指针可以转换为指向另一种类型的函数的指针,然后再次返回 重要的是,在使用指针调用该函数之前,必须先强制转换回原始类型(从技术上讲,是兼容类型。在6.2.7中定义为“ compatible” )。 请注意,由于...
Void 指针是一种指针类型,指向一个不存在的地址,通常用于函数中作为参数传递,或者用于指向不存在的内存地址。 将double 转换为 void 指针,实际上是将 double 类型的数据转换为 void * 类型,以便于在函数中传递或指向不存在的内存地址。 以下是将 double 转换为 void 指针的示例代码: ...
应该写成下面这种形式, 而不是使用 void int G(int (*)(int));然后你就可以 G(F) 调用了.如何把void*转换成函数指针:int G(void * f){ int value = 10; ((int (*)(int))f)(value); // 我觉得这样可以. 给f传的参数为 10.} ...
void/void* void为不确定类型,不能用void来声明变量,一般用于对函数返回类型的限定和对函数参数的限定 void*为不确定类型指针,可以用来声明指针void*可以接受任何类型的赋值,无需强制转换,void*可以赋值给任意类型的变量,但需要强制转换 发布于 2021-06-03 20:20 ...
}intmain() {void*ptr = (void*)0x1234abcd567890ef;charbuf[20]; hexDump(ptr, buf); printf("\"%s\"\n", buf); } 上面是针对x64转换的,因为0x1234abcd567890ef是64位,如果是用x86调试,只能输出32位的16进制值 主要算法是在 for(intnibble = (2*sizeof(ptr) -1); nibble >=0; --nibble)...
取多void类型使用描述不正确的是?( )取多取多 A. 返回指向 void 的指针 ,可以转换为任何数据类型 B. 函数返回为空 C. 函数参数为空 D. void可以
void*不被鼓励用于“泛型编程”目的,除非真的有必要,因为它会阻止编译器进行严格的类型检查,并可能...