Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28162
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 42
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-26 21:30
文章分类

全部博文(4)

文章存档

2014年(4)

我的朋友

分类: C/C++

2014-04-13 15:00:52

结构:结构是一些成员的集合,成员可以有不同的类型。类型如下

点击(此处)折叠或打开

  1. struct {
  2.         int a;
  3.         float b;
  4.         char c;
  5.        } x;

这个声明创建了一个名叫x的变量。他包含了三个类型,我们通过名字来访问每个成员变量。
结构成员的访问:
example:

点击(此处)折叠或打开

  1. struct COMPLEX comp{
  2.                 float f;
  3.                 int a[12];
  4.                 long *lp;
  5.                 struct SIMPLE s;
  6.                 struct SIMPLE sa[20];
  7.                 struct SIMPLE *sp;
  8.                 };
comp.a 就选择了a这个数组成员。
(comp.sa)[4]选择一个数组元素。
结构成员的间接访问:
间接访问结构成员使用“->”符号来实现:
如:cp->f
     cp->a

联合:
联合类似结构,但在内存中,成员的地址是相同的。
例如:
  1. union {
  2.        int a;
  3.        float b;
  4.        char c;
  5.        } f;
在联合中每次访问我们只能访问一个成员变量。
程序如下

输出结果:

从输出结果我们可以看出,我们只输出了字符x,并没有输出我们想要的25,和3.14.
联合在调用的时候,每次我们只能访问其中的一个成员变量,但是我们可以同时存储不同种类型的数据在我们的集合中。
位段:
先看一段断码:

点击(此处)折叠或打开

  1. #include<stdio.h>

  2.     struct {
  3.         unsigned int a:2;
  4.         } x;
  5. int main()
  6. {
  7.     
  8.     x.a=1;
  9.     x.a+=1;
  10.     printf("%x\n",x.a);
  11.     return 0;
  12. }

输出结果为2.

点击(此处)折叠或打开

  1. #include<stdio.h>

  2.     struct {
  3.          int a:2;
  4.         } x;
  5. int main()
  6. {
  7.     
  8.     x.a=1;
  9.     x.a+=1;
  10.     printf("%x\n",x.a);
  11.     return 0;
  12. }

输出结果为-2.
仅加深一下记忆。
阅读(1847) | 评论(0) | 转发(0) |
0

上一篇:shell脚本函数定义的两种方式

下一篇:没有了

给主人留下些什么吧!~~