📜  初始化二维数组 c++ memset - C++ (1)

📅  最后修改于: 2023-12-03 14:50:16.696000             🧑  作者: Mango

初始化二维数组

在C++中,我们可以使用memset函数来初始化二维数组。该函数可以将一段内存空间中的所有字节设置成指定的值,常用于初始化数组和清空内存。下面我们将会讨论如何使用memset初始化二维数组。

语法
void *memset(void *destination, int value, size_t num);
  • destination:欲填充的内存起始地址。
  • value:填充内存的值。这个值被视为无符号字符。
  • num:填充的字节数。
示例

下面我们创建一个3行4列的二维数组,初始值均为0。首先需要包含头文件cstring。

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    const int row = 3;
    const int col = 4;
    int a[row][col];

    memset(a, 0, sizeof(a));

    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

输出结果:

0 0 0 0 
0 0 0 0 
0 0 0 0 

我们也可以创建并初始化一个全是1的二维数组。

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    const int row = 3;
    const int col = 4;
    int b[row][col];

    memset(b, 1, sizeof(b));

    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            cout << b[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

输出结果:

16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 
16843009 16843009 16843009 16843009 

可以看到,所有的值都不是1。这是因为memset函数将1视为一个无符号字符的ASCII码,因此每个整数都被设置为了一个无符号字符的ASCII码。

建议
  • 如果需要初始化的数组中包含浮点数或其他类型,请不要使用memset函数。
  • 可以使用循环语句实现更加灵活的初始化方式。