我想知道
之间有什么区别int a;
和
struct node{
int a;
};
struct node b;
他们是一样的吗?
答案 0 :(得分:2)
不,他们不一样。
int a;
- >一个名为a
的变量,类型为整数。
struct node b;
- >名为b
的{{1}}类型的变量。
这里,结构只包含struct node
但总是的情况并非如此。这两个变量是
答案 1 :(得分:2)
不,他们不一样。 a
和b
上的语言允许的操作因其类型不同而不同。当它们包含相同的位模式时,这些位模式的解释可能会有所不同。
编译器可能采用不同的路径从函数返回int
vs struct node
或将它们作为函数参数传递。
基本上a
和b.a
具有相同的行为。编译器有时可能会选择使用成员类型优化单个成员结构。
的差异强>
1.编译时间:a的类型和b的类型不同
2.编译时间:a = 42(OK),b = 42(错误)
3.运行时:编译器可以选择使用不同的策略,同时将a和b复制到相同类型的不同变量。
4. section 6.7.2.1 in the C99 standard说 结构对象中可能有未命名的填充,但不是在其开头 。这意味着允许sizeof a
不等于sizeof b
额外注释
除非是在情况下,否则几乎不需要单个成员结构
其他成员有条件编译出来。 (保持代码易于管理)
2.当您计划将数组作为函数参数传递时,使用赋值运算符从函数或复制数组返回数组
3.限制运营。 [例如,您不希望添加,删除等号,但分配正常]
答案 2 :(得分:0)
根据你的例子,两者都是一样的。但结构主要用于使用公共变量名访问多个变量。
struct node {
int a;
float b;
char c;
};
struct node b;
所以现在使用变量b我们可以访问三种不同的数据类型。所以这是结构的主要优势。
将结构作为普通变量访问。 b.a; 如果您正在使用指针,那么这将是b-> a。请注意,您必须为此分配内存。