结构【重学C之六】
来源:互联网 发布:电路板设计软件下载 编辑:程序博客网 时间:2024/05/20 14:19
结构是一个或多个变量的集合,这些变量可能为不同的类型(区别于数组),为了处理的方便而将这些变量组织在一个名字之下。它也被称之为结构体,是C语言提供的一种定义自定义数据类型的方式。结构体给了程序员自行实现自己所需要数据结构的能力。ANSI定义了结构的赋值操作——结构可以拷贝、赋值、传递给函数,函数也可以返回结构类型的返回值。
结构的声明是通过struct关键字来实现的,比较常见的一个例子是二维坐标系中坐标点的例子,一个坐标点包含两个变量,这两个变量可以定义在一个结构体中,那么这个结构体就可以表示一个二维平面上的点,结构体的声明如下:
struct point { int x; int y;};
仅仅声明结构体是不分配内存空间的,它只是定义了一个概念上的东西。如果要让一个结构体在内存中分配空间,则必须定义它,定义结构体的方式和定义普通变量的方式是一样的,都是通过变量类型,变量名来定义的,定义的示例如下:
struct point pt;
也可以通过typedef来简化定义:
typedef struct point { int x; int y;}point;point pt;
结构体与函数
结构体的合法操作只有几种:作为一个整体赋值和复制,通过&运算符取地址,访问其成员。当结构体作为参数传入其他函数中,它和其他类型的变量是一样的,都是通过值传递的。也就是说,当把结构体传入到函数中时,被传入函数中会创建一个此结构体的拷贝。如果传入的结构体很大,使用指针的方式效率会比较高,因为这样就不用复制整个结构体中的成员。
结构数组
以结构体作为成员的数组就是结构数组,也叫结构体数组。结构数组的声明如下:
struct key { char *word; int count;};sturct key keytab[NKES];
联合
联合是可以(在不同时刻)保存不同类型和长度的对象的变量,编译器负责跟踪对象的长度和对齐要求。联合的定义如下:
union u_tag { int ival; float fval; char *sval;} u;
位字段
位字段和联合一样现在也极少被使用了。
0 0
- 结构【重学C之六】
- 控制流【重学C之三】
- 重学C语言之指针
- 重学C语言
- 重学C语言
- 类型与运算符【重学C之二】
- 函数与程序结构【重学C之四】
- 指针与数组【重学C之五】
- 输入与输出【重学C之七】
- UNIX系统接口【重学C之八】
- 【重学C/C++】句柄
- 重学C++ (六) 标准IO库
- 重新教自己学算法之递归排序——堆排序(六)
- 趣学 C 语言(六)—— 结构和联合
- 重学c语言_1
- 重学c语言_2
- 重学c语言_3
- 重学之音标有感
- 多图表单上传
- java学习笔记1--开发环境平台总结
- Installtion ID : UUID 统计安装
- Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法
- 序列化和反序列化系列博客(一)—— What and Why?
- 结构【重学C之六】
- ref和out的使用与区别
- (图文)在MyEclipse(2015)中上传项目到github的步骤(很详细)
- 发现群组(二)分级聚类
- 6种排序大集合--由小到大,由大到小!
- java学习笔记2--数据类型、数组
- 产品经理面试小结
- 2015 Sichuan Province Contest (Carries)
- Qt QToolBar上间距控制