Método de inicialización de matriz de C ++: for loop o memset

1. Inicialización predeterminada:

int arr[26] = {
    
    1}; // 初始化为{1,0,0,。。。,0}

Nota: La lista de inicialización solo inicializa el elemento en la posición indicada, y otras posiciones se inicializan a 0 por defecto.
Referencia: inicialización de matriz C / C ++

vector<int> ans(5); //vector默认初始化为0

2. Para la inicialización del bucle:

int arr[26] = {
    
    1}; 
for(int i = 0; i<26;i++){
    
     // 全部初始化为-1
    arr[i] = -1;
} 

3. Inicialización de memset:

int arr[26] = {
    
    -1}; 
memset(arr, -1, sizeof(arr));
char arr_1[10]; //单字符的变量可以正常初始化
memset(arr_1, 'c', sizeof(arr_1));

Nota: Primero: función memsetInicializar el bloque de memoria por bytes, Por lo tanto, no se puede usar para inicializar la matriz int a un valor que no sea 0 y -1 (a menos que el byte alto y el byte bajo del valor sean iguales).
Segundo: memset (void * s, int ch, size_t n); El rango real de ch debe ser 0 ~~ 255, porque esta funciónSolo los últimos ocho bits de ch pueden asignarse a cada byte del rango que ingrese
Enciclopedia memset Baidu

para resumir:

1. Es conveniente inicializar con memset, pero tenga en cuenta que no se pueden inicializar valores distintos de 0 y -1.

Supongo que te gusta

Origin blog.csdn.net/qq_33726635/article/details/106114567
Recomendado
Clasificación