void *p 怎么赋值一个int型值
时间: 2023-12-10 08:40:57 浏览: 24
可以通过类型转换将 int 类型的值赋给 void 指针,如下所示:
```
int num = 10;
void *p = (void *)#
```
在这里,我们使用了取地址符 & 获取变量 num 的地址,并将其强制转换为 void 指针类型,然后将其赋值给指针变量 p。这样做不会改变 num 变量的类型,只是在赋值时将其转换为 void 指针类型。
相关问题
int** 能赋值给void *吗
int** 不能直接赋值给 void*。因为 void* 是一个无类型指针,可以指向任何类型的数据,而 int** 是一个指向指针的指针,它指向的是 int 类型的数据。这两种类型是不兼容的,所以不能直接赋值。
如果你想将 int** 转换为 void*,可以使用类型转换操作符进行转换。但是需要注意,这样的转换可能会导致类型不匹配的错误,因为 void* 无法知道指向的具体类型。
以下是一个示例代码,演示了如何将 int** 转换为 void*:
```cpp
int main() {
int a = 10;
int* p = &a;
int** pp = &p;
void* vp = static_cast<void*>(pp);
return 0;
}
```
请注意,这种转换可能会导致类型安全问题,因为在将 void* 转换回 int** 时,编译器无法检查类型是否匹配。因此,在进行这种转换时,需要谨慎处理。
void *p = NULL; int a = 3; 怎么将a的值复制给*p
可以通过将指针 `p` 指向变量 `a` 的地址,然后使用解引用操作符 `*` 来将 `a` 的值赋值给 `p`。
示例代码如下:
```
void *p = NULL;
int a = 3;
p = &a; // 将指针p指向变量a的地址
*p = a; // 通过解引用操作符将a的值赋值给p
```
需要注意的是,此时 `p` 的类型为 `void*`,无法直接进行解引用操作,需要先转换为对应类型的指针才能进行操作。