variable utilizo una pseint programacion inicializar formas como c++ c

c++ - utilizo - manual de programacion android pdf



¿Los miembros de la estructura sin inicializar siempre se ponen a cero? (3)

No. Se garantiza que sea 0.

Considere una estructura en C:

struct T { int x; int y; };

Cuando esto está parcialmente inicializado como en

struct T t = {42};

¿se garantiza que sea 0 o es una decisión de implementación del compilador?


Punto 8.5.1.7 del borrador estándar:

-7- Si hay menos inicializadores en la lista que miembros en el agregado, entonces cada miembro que no se inicialice explícitamente se inicializará por defecto (dcl.init). [Ejemplo:

struct S { int a; char* b; int c; }; S ss = { 1, "asdf" };

inicializa ss.a con 1, ss.b con "asdf" y ss.c con el valor de una expresión de la forma int (), es decir, 0].


Se garantiza que sea 0 si está inicializado parcialmente, al igual que los inicializadores de matriz. Si no está inicializado, será desconocido.

struct T t; // t.x, t.y will NOT be initialized to 0 (not guaranteed to) struct T t = {42}; // t.y will be initialized to 0.

Similar:

int x[10]; // Won''t be initialized. int x[10] = {1}; // initialized to {1,0,0,...}

Muestra:

// a.c struct T { int x, y }; extern void f(void*); void partialInitialization() { struct T t = {42}; f(&t); } void noInitialization() { struct T t; f(&t); } // Compile with: gcc -O2 -S a.c // a.s: ; ... partialInitialzation: ; ... ; movl $0, -4(%ebp) ;;;; initializes t.y to 0. ; movl $42, -8(%ebp) ; ... noInitialization: ; ... ; Nothing related to initialization. It just allocates memory on stack.