Inicialización de estructura C y campos de caracteres/cadenas

Formas comunes de inicializar estructuras C, incluidos miembros char/string.

Inicialización posicional en la declaración

1
2
3
4
5
6
7
8
struct InitMember {
    int first;
    double second;
    char *third;
    float four;
};

struct InitMember test = { -10, 3.141590, "method one", 0.25f };

El orden importa en la inicialización posicional.

Asignación después de la declaración

1
2
3
4
5
6
struct InitMember test;

test.first = -10;
test.second = 3.141590;
test.third = "method two";
test.four = 0.25f;

Inicializadores designados (recomendados para facilitar la lectura)

1
2
3
4
5
6
struct InitMember test = {
    .first = -10,
    .second = 3.141590,
    .third = "method three",
    .four = 0.25f
};

Notas para miembros de cadena

  • char * apunta a una cadena literal o a una memoria asignada dinámicamente.
  • Si se requiere almacenamiento grabable, use char array[N] y copie el contenido.
  • Tenga cuidado con la vida útil y la mutabilidad de las cuerdas puntiagudas.
记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy