tamaño requerido reparar redundancia porque minimo mac listo inicializar inferior incorrecta funcion externo esta especificado duro dispositivo disco desde desconocido convertible ciclica c warnings

requerido - Advertencia: X puede usarse sin inicializar en esta función



mi disco duro externo esta sin inicializar (3)

Cuando usa Vector *one , simplemente está creando un puntero a la estructura pero no hay memoria asignada a ella.

Simplemente use one = (Vector *)malloc(sizeof(Vector)); Declarar la memoria y crear una instancia de ella.

Estoy escribiendo una estructura de "vector" personalizada. No entiendo por qué recibo una Warning: "one" may be used uninitialized aquí.

Este es mi archivo vector.h

#ifndef VECTOR_H #define VECTOR_H typedef struct Vector{ int a; int b; int c; }Vector; #endif /* VECTOR_ */

La advertencia sucede aquí en la línea one->a = 12

#include<stdio.h> #include<stdlib.h> #include<math.h> #include "vector.h" int main(void){ Vector* one; one->a = 12; one->b = 13; one->c = -11; }


Recibe la advertencia porque no asignó un valor a one , que es un puntero. Este es un comportamiento indefinido.

Deberías declararlo así:

Vector* one = malloc(sizeof(Vector));

o así:

Vector one;

en cuyo caso es necesario reemplazar -> operador con . Me gusta esto:

one.a = 12; one.b = 13; one.c = -11;

Finalmente, en C99 y posteriores puede usar los inicializadores designados :

Vector one = { .a = 12 , .b = 13 , .c = -11 };


one no ha sido asignado, por lo que apunta a una ubicación impredecible. Deberías colocarlo en la pila:

Vector one; one.a = 12; one.b = 13; one.c = -11

o asigna memoria dinámicamente para ello:

Vector* one = malloc(sizeof(*one)) one->a = 12; one->b = 13; one->c = -11 free(one);

Tenga en cuenta el uso de free en este caso. En general, necesitará exactamente una llamada free para cada llamada realizada a malloc .