in

Cómo inicializar una estructura de acuerdo con los estándares del lenguaje de programación C

apple touch icon@2

Agregar a todo esto es una buena respuesta a un resumen de cómo inicializar una estructura (unión y matriz) en C, centrado especialmente en el inicializador diseñado.

Inicialización estándar

struct point 
{
    double x;
    double y;
    double z;
}

p = {1.2, 1.3}; 

Inicializador designado

El inicializador designado surgió desde ISO C99 y es una forma diferente y más dinámica de inicializar en C al inicializar struct, union o un array.

La mayor diferencia con la inicialización estándar es que no tiene que declarar los elementos en un orden fijo y también puede omitir el elemento.

Desde el Guía GNU:

El estándar C90 requiere que los elementos de un inicializador aparezcan en un orden fijo, el mismo que el orden de los elementos en la matriz o estructura que se inicializa.

En ISO C99, puede dar los elementos en orden aleatorio, especificando los índices de matriz o los nombres de campo de estructura a los que se aplican, y GNU C también permite esto como una extensión en el modo C90.


Ejemplos de

1. Índice de matriz

Inicialización estándar

int a[6] = { 0, 0, 15, 0, 29, 0 };

Inicialización designada

int a[6] = {[4] = 29, [2] = 15 }; // or
int a[6] = {[4]29 , [2]15 }; // or
int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };

2. Estructura o unión:

Inicialización estándar

struct point { int x, y; };

Inicialización designada

struct point p = { .y = 2, .x = 3 }; or
struct point p = { y: 2, x: 3 };

3. Combine los elementos de nomenclatura con la inicialización C ordinaria de elementos sucesivos:

Inicialización estándar

int a[6] = { 0, v1, v2, 0, v4, 0 };

Inicialización designada

int a[6] = { [1] = v1, v2, [4] = v4 };

4. Otros:

Etiquetar los elementos de un inicializador de matriz

int whitespace[256] = { [' '] = 1, ['t'] = 1, ['h'] = 1,
                        ['f'] = 1, ['n'] = 1, ['r'] = 1 };

escribe una serie de ‘.fieldname’ y ‘[index]’designadores antes de un’ = ‘para especificar un subobjeto anidado para inicializar

struct point ptarray[10] = { [2].y = yv2, [2].x = xv2, [0].x = xv0 };

Guías

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Ruby – Hashes

gfg 200x200 min

Método ArrayList get (index) en Java con ejemplos