Warning: X may be used uninitialized in this function
one
has not been assigned so points to an unpredictable location. You should either place it on the stack:
Vector one;one.a = 12;one.b = 13;one.c = -11
or dynamically allocate memory for it:
Vector* one = malloc(sizeof(*one))one->a = 12;one->b = 13;one->c = -11free(one);
Note the use of free
in this case. In general, you'll need exactly one call to free
for each call made to malloc
.
You get the warning because you did not assign a value to one
, which is a pointer. This is undefined behavior.
You should declare it like this:
Vector* one = malloc(sizeof(Vector));
or like this:
Vector one;
in which case you need to replace ->
operator with .
like this:
one.a = 12;one.b = 13;one.c = -11;
Finally, in C99 and later you can use designated initializers:
Vector one = { .a = 12, .b = 13, .c = -11};