在一段代码中,我需要从用户那里获得一个输入并立即打印出来。我对这两个片段之间的良好练习感到困惑。
Snippet#1:
int i;
while(){
scanf("%d", &i);
printf("%d", i);
}
我只在循环中使用变量 i 。那么,我应该在循环中声明并使用它来维护使用范围的良好实践吗?
如果我这样做,
Snippet#2:
while(){
int i;
scanf("%d", &i);
printf("%d", i);
}
变量 i 在循环的每次迭代中声明!这些重新声明会消耗更多的处理能力并一次又一次地重新分配内存
哪种方法更好,为什么?
答案 0 :(得分:1)
你说:
变量i在循环的每次迭代中声明!这些重新声明会消耗更多的处理能力并一次又一次地重新分配内存
这是您无效的假设。 C编译器将计算函数所需的总内存,并预先为该用法进行分配。对于局部变量,该分配实际上只是指针的移位。
为了说明,如果我有一个功能:
void a_function () {
extern int x, n1, n2;
while (--n1) {
int i;
scanf("%d", &i);
x += i;
}
while (--n2) {
int i, j;
scanf("%d %d", &i, &j);
x += i + j;
}
}
编译器将在进入函数时为2个整数分配空间(如果它决定它可以在寄存器中执行所有操作,则为无。)