我有以下功能:
void *foo(void *i) {
int a = (int) i;
}
int main() {
pthread_t thread;
int i;
pthread_create(&thread, 0, foo, (void *) i);
}
Run Code Online (Sandbox Code Playgroud)
在编译时,有一些关于强制转换((void *) i和int a = (int) i)的错误.如何pthread_create正确传递整数作为最后一个参数?
在C和/或C++中:将int转换为void指针并再次返回int是否安全?
基于问题" C++:将指针转换为int并稍后再返回指针是否安全? ".
#include <stdio.h>
void pass(void* );
int main()
{
int x;
x = 10;
pass((void*)x);
return 0;
}
void pass(void* x)
{
int y = (int)x;
printf("%d\n", y);
}
output: 10
Run Code Online (Sandbox Code Playgroud)
我的问题来自上面的代码..
当我们将正常变量强制转换为void*或任何指针变量时会发生什么?
我们必须将变量的地址传递给函数,因为在函数定义参数中是指针变量.但是这段代码传递了正常变量..
在linux pthread编程中遵循这种格式......我是一个入门级的C程序员.我在linux gcc编译器中编译这个程序..
我正在尝试从int创建一个void*.但是gcc总是给我一个警告,我不能把int转换为void*.这是我的代码:
#define M_TABLE_SIZE 64*1024
static const void* M_OFFSET = M_TABLE_SIZE;
Run Code Online (Sandbox Code Playgroud)
我已经尝试(void*)M_TABLE_SIZE但是后来我得到一个错误,我不能使用*运算符.
将int转换为void*的正确方法是什么?