warrior* temp1[10000]怎么初始化为0
时间: 2024-02-21 22:01:21 浏览: 25
可以使用以下方式将 `warrior* temp1[10000]` 数组初始化为 `NULL`:
```cpp
warrior* temp1[10000] = {0};
```
这种方式在 C++11 标准中是可行的,可以将数组中的所有元素初始化为 0。如果你使用的是早期的 C++ 标准,你也可以使用以下方式:
```cpp
warrior* temp1[10000] = {NULL};
```
这两种方式都可以将数组中的指针初始化为 `NULL`,以便在后续的操作中判断指针是否为空指针。
相关问题
warrior* warriors[10000][4]; warrior* temp1[10000]; warrior* temp2[10000];如何将warriors的值复制给temp1
如果你想要将 `warriors` 数组中的值复制到 `temp1` 数组中,可以使用 `memcpy` 函数。示例代码如下:
```c++
#include <cstring>
// 将 warriors 数组中的值复制到 temp1 数组中
std::memcpy(temp1, warriors, sizeof(warrior*) * 4 * 10000);
```
上述代码中,`memcpy` 函数的第一个参数是目标数组的指针,第二个参数是源数组的指针,第三个参数是要复制的字节数。由于 `warriors` 数组是一个二维数组,因此需要将其乘以 4,才能得到需要复制的字节数。注意,这里使用的是 `sizeof(warrior*)` 而不是 `sizeof(warrior)`,因为数组中存储的是指向 `warrior` 类型的指针。
需要注意的是,使用 `memcpy` 函数进行内存拷贝时,需要确保目标数组的大小足够大,否则可能会出现内存访问错误。
warrior* warriors[10000][4]; warrior* temp1[10000]; warrior* temp2[10000];如何将warriors的值赋值给temp
可以使用循环将 `warriors` 数组中的每个元素依次赋值给 `temp1` 和 `temp2` 数组,示例代码如下:
```c++
for(int i=0;i<10000;i++){
for(int j=0;j<4;j++){
temp1[i] = &warriors[i][j];
}
temp2[i] = &warriors[i][0];
}
```
上述代码中,外层循环遍历 `warriors` 数组中的每个元素,内层循环遍历每个元素中的 4 个 `warrior` 指针。将 `warriors[i][0]` 赋值给 `temp2[i]`,将 `warriors[i][j]` 赋值给 `temp1[i]`(这里的 `j` 表示内层循环的下标)。
需要注意的是,`temp1` 和 `temp2` 数组的类型都是 `warrior*`,因此数组元素的类型应为指向 `warrior` 类型的指针。