【发布时间】:2017-08-17 13:03:20
【问题描述】:
我开始做关于结构的程序。我对声明结构本身感到困惑,因为它允许对同一个变量进行多次声明,这在 c 中并不常见。
让我们考虑以下代码:
#include<stdio.h>
struct {
int x;
int y;
}u, v;
int main()
{
struct {int x; int y;} u = {3, 4}, v = {5, 6};
/* struct {int x; int y;} u, v*/
printf("%d\n", u.x);
printf("%d\n", v.y);
return 0;
}
一般来说,C 不允许对同一个变量进行多次声明,如果我不注释掉 main 中的第二条语句,这里也是如此。但我的疑问是,如果一个变量在 main 而不是其他变量,为什么它会忽略相同变量的多个声明?
【问题讨论】:
-
内部
u与外部u不同。两者的共同点是名称,内部u隐藏(隐藏)外部u。v也一样。 -
char x; void foo(int x) {{float x; {double x;}}}有效。 :-)