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