C在函数中传递int?

在函数中传递int时,我得到的结果不正确:

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) { ... } 

现在结果是Test1第一次打印:2684032,Test2打印:50

第二次测试1打印:2684032和测试2打印:50;

他们应该打印50。

我已经测试过struct1 [1] .first的值在它被用于函数recruit之前是50。

有没有人知道为什么会发生这种情况?

C函数中未初始化的值不是0,它们只是在那个特定时刻内存的垃圾。

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

这应该表明这个想法……

希望我正确地解释了这个问题。

请将此语句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) 。 由于未初始化的变量,您正在观察不正确的值。