我对{}
内的main
感到困惑。有人可以解释一下他们的目的吗?我理解代码,但这是我第一次看到这种格式。
为什么代码的这一部分需要{}
,或者函数内部{}
的用途是什么?它不是声明嵌套函数,还是它?
int main()
{
void *p1, *p2, *p3;
arenaCheck();
p1 = malloc(254);
arenaCheck();
p2 = malloc(25400);
arenaCheck();
p3 = malloc(254);
printf("%llx %llx %llx\n", (long long)p1, (long long)p2, (long long)p3);
arenaCheck();
free(p2);
arenaCheck();
free(p3);
arenaCheck();
free(p1);
arenaCheck();
{ /* What is the purpose of these, what is this doing { } */
struct timeval t1, t2;
int i;
getutime(&t1);
for(i = 0; i < 10000; i++)
if (malloc(4) == 0)
break;
getutime(&t2);
printf("%d *** malloc(4) required %f seconds\n", i, diffTimeval(&t2,&t1));
}
return 0;
}
答案 0 :(得分:3)
旧版本的C(pre-C99)需要在块的开头声明变量。 t1
和t2
的声明如果为没有大括号的C版本编译此代码会导致错误。如果你正在使用C99或更新版本,你可以简单地删除大括号 - 在这种情况下它们是多余的。
答案 1 :(得分:2)
那是一个街区。它创造了一个词汇范围。块内的变量不能在外面使用。
int main() {
{
int i = 5;
}
printf("i = %d\n", i); // error
}
它们也在旧程序中很有用,因为曾几何时,你必须将所有变量放在一个块的顶部。
在C ++中,析构函数将在块结束时被调用。