结构:结构是一些成员的集合,成员可以有不同的类型。类型如下
-
struct {
-
int a;
-
float b;
-
char c;
-
} x;
这个声明创建了一个名叫x的变量。他包含了三个类型,我们通过名字来访问每个成员变量。
结构成员的访问:
example:
-
struct COMPLEX comp{
-
float f;
-
int a[12];
-
long *lp;
-
struct SIMPLE s;
-
struct SIMPLE sa[20];
-
struct SIMPLE *sp;
-
};
comp.a 就选择了a这个数组成员。
(comp.sa)[4]选择一个数组元素。
结构成员的间接访问:
间接访问结构成员使用“->”符号来实现:
如:cp->f
cp->a
联合:
联合类似结构,但在内存中,成员的地址是相同的。
例如:
-
union {
-
int a;
-
float b;
-
char c;
-
} f;
在联合中每次访问我们只能访问一个成员变量。
程序如下
输出结果:
从输出结果我们可以看出,我们只输出了字符x,并没有输出我们想要的25,和3.14.
联合在调用的时候,每次我们只能访问其中的一个成员变量,但是我们可以同时存储不同种类型的数据在我们的集合中。
位段:
先看一段断码:
-
#include<stdio.h>
-
-
struct {
-
unsigned int a:2;
-
} x;
-
int main()
-
{
-
-
x.a=1;
-
x.a+=1;
-
printf("%x\n",x.a);
-
return 0;
-
}
输出结果为2.
-
#include<stdio.h>
-
-
struct {
-
int a:2;
-
} x;
-
int main()
-
{
-
-
x.a=1;
-
x.a+=1;
-
printf("%x\n",x.a);
-
return 0;
-
}
输出结果为-2.
仅加深一下记忆。
阅读(1851) | 评论(0) | 转发(0) |