int** 能赋值给void *吗
时间: 2024-01-17 07:18:45 浏览: 30
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 怎么赋值一个int型值
可以通过类型转换将 int 类型的值赋给 void 指针,如下所示:
```
int num = 10;
void *p = (void *)#
```
在这里,我们使用了取地址符 & 获取变量 num 的地址,并将其强制转换为 void 指针类型,然后将其赋值给指针变量 p。这样做不会改变 num 变量的类型,只是在赋值时将其转换为 void 指针类型。
void assign(int*array.int.length)
这段代码并不完整,缺少函数名和函数体。但是根据函数名可以猜测该函数的作用是给一个长度已知的整型数组进行赋值操作。函数体可能如下:
```c++
void assign(int* array, int length) {
for (int i = 0; i < length; i++) {
array[i] = i;
}
}
```
该函数将数组中每个元素赋值为其下标值。