what is wrong with this code #include <stdio.h>
The variables i
, j
, and k
are not initialized. This means that they will contain garbage values. In addition, the numbers
array is also not initialized, so it will also contain garbage values. Furthermore, the array that is malloc'ed is also not initialized, so it too will contain garbage values. It is generally a good practice to initialize variables to avoid undefined behavior.
Here is one way to fix the code:
#include <stdio.h>
#include <stdlib.h>
int
main()
{
int i, j, k;
int numbers[5];
int *array;
puts("These variables are now initialized:");
i = 0;
j = 0;
k = 0;
printf(" i = %d\n", i);
printf(" j = %d\n", j);
printf(" k = %d\n", k);
puts("This array is now initialized:");
for (i = 0; i < 5; i++) {
numbers[i] = 0;
printf(" numbers[%d] = %d\n", i, numbers[i]);
}
puts("malloc an array ...");
array = malloc(sizeof(int) * 5);
if (array) {
puts("This malloc'ed array is now initialized:");
for (i = 0; i < 5; i++) {
array[i] = 0;
printf(" array[%d] = %d\n", i, array[i]);
}
free(array);
}
/* done */
puts("Ok");
return 0;
}
In this code, we initialize the variables i
, j
, and k
to 0. We also initialize the numbers
array to 0, and the malloc'ed array to 0. This ensures that these variables and arrays will not contain garbage values.
Comments
Post a Comment