在C中,struct和变量的字段是否可以具有相同的名称?会有什么问题吗?例如:
struct foo {
int x
}
main() {
struct foo j;
int x = 666;
j.x = x;
}
这有效吗?
答案 0 :(得分:1)
在C中,struct和变量的字段是否可以具有相同的名称?
是。这是因为struct
有自己的命名空间。 C11 §6.2.3 Name spaces of identifiers
[...]因此,各种类别的标识符都有单独的名称空间,如下所示:
- 结构或工会的成员;每个结构或联合为其成员都有一个单独的名称空间(通过
.
或->
运算符用于访问成员的表达式的类型消除歧义;)
- 所有其他标识符,称为普通标识符(在普通声明符中声明或作为枚举常量)。
答案 1 :(得分:0)
是的,因为struct有另一个命名空间,而main方法中的变量有不同的命名空间,你总是通过使用类似j.x的引用来访问struct变量。
#include<stdio.h>
struct foo {
int x;
};
void main() {
struct foo j;
int x = 666;
j.x = x;
printf("struct var x = %d\n",j.x);//struct var x = 666
}