C ¿Pasando un int en una función?

Estoy obteniendo resultados incorrectos al pasar un int en una función:

int recruit(int var1, int re_unit, char *char_buffer, int var2) { int run = 1; int int_buffer = 0; printf("Test1 %d\n", var1); printf("Test2 %d\n", var2); ... } void some_other_function(structs, struct1[]) { int var1 = 0; int var2 = 0; int re_unit = 0; char char_buffer[] = "What ever"; //strucs[1].first = 50 this is done in a other section var1 = strucs1[1].first; var2 = strucs1[1].first; recruit(var1, re_unit, char_buffer, var2); // Ind the full verstion of the program this function is called 2 times: // The first time nothing is worng, how ever the second time, the result // is as explaned below //strucs[2].first = 50 // this is done in a other section var1 = struct1[2].first; var2 = struct1[2].first; recruit(var1, re_unit, char_buffer, var2); } int main(void) { ... } 

Ahora el resultado es que la primera vez que Test1 imprime: 2684032, y Test2 imprime: 50

La segunda vez, la Prueba 1 imprime: 2684032 y la Prueba 2 imprime: 50;

Todos deberían imprimir 50.

He probado que el valor de struct1 [1] .first es 50 antes de que se use en la función recluta.

¿Alguien sabe una razón por la que esto podría suceder?

Los valores no inicializados en las funciones de C no son 0, solo son basura, sea cual sea la memoria que tenía en ese momento en particular.

 #include  int main() { int a; printf("%i\n", a); return 0; } 

Eso debería demostrar la idea …

Ojalá haya interpretado la pregunta correctamente.

Cambie esta statement int recruit(int lvl, int re_unit, char *char_buffer, int u_lvl, int lvl2) por int recruit(int lvl, int re_unit, char *char_buffer, int lvl, int lvl2) int recruit(int lvl, int re_unit, char *char_buffer, int u_lvl, int lvl2) int recruit(int lvl, int re_unit, char *char_buffer, int lvl, int lvl2) . Está observando un valor incorrecto debido a las variables no inicializadas.