C程序设计语言整理笔记(六)结构
来源:互联网 发布:linux查看dns 编辑:程序博客网 时间:2024/06/09 19:54
1. 结构的基本知识
Ø 结构是一个或多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组织在一个名字之下
Ø 结构可以拷贝、赋值、传递给函数,函数也可以返回结构类型的返回值
Ø
struct point
{
int x;
int y;
};
struct结构标记
{
一系列声明
}; Ø struct声明定义了一种数据类型
struct {...} x, y;从语法角度来说,与声明int x, y;具有相似的意义
Ø 如果结构声明的后面不带变量表,则不需要为它分配存储空间,它仅仅描述了一个结构的模版或轮廓。但是,如果结构声明中带有标记,那么在以后定义结构实例时便可以使用该标记定义
Ø 在表达式中,可以通过下列形式引用某个特定结构中的成员:
结构名.成员
Ø 结构可以嵌套
struct rectangular {
struct point pt1;
struct point pt2;
};
struct rectangular rect;
通过语句rect.pt1.x引用rect的成员pt1的x坐标
2. 结构与函数
Ø 结构的合法操作:
1) 作为一个整体复制和赋值
2) 通过&运算符取地址
3) 访问其成员
复制和赋值包括向函数传递参数以及从函数返回值;结构之间不可以进行比较;可以用一个常量成员值列表初始化结构,自动结构也可以通过赋值进行初始化
Ø 传递结构的方法
1) 分别传递各个结构成员:
struct point makepoint(int x, int y)
{
struct point temp;
temp.x = x;
temp.y = y;
return temp;
}
参数名和结构成员同名不会引起冲突,事实上,使用重名可以强调两者之间的关系
2) 传递整个结构
# define min(a, b) ((a) < (b) ? (a) : (b))
# define max(a, b) ((a) > (b) ? (a) : (b))
struct rectangular canonrect(struct rectangular rect) //将矩形坐标规范化
{
struct rectangular temp;
temp.pt1.x = min(rect.pt1.x, r.pt2.x);
temp.pt1.y = min(rect.pt1.y, r.pt2.y);
temp.pt2.x = max(rect.pt1.x, r.pt2.x);
temp.pt2.y = max(rect.pt1.y, r.pt2.y);
return temp;
}
函数的参数和返回值都是结构类型。结构类型的参数和其他类型的参数一样,都是通过值传递
3) 传递指向结构的指针
如果传递给函数的结构很大,使用指针方式的效率比复制整个结构的效率要高
Ø struct point *pt;
(*pt).x中的圆括号是必须的
Ø *pt是一个指向结构的指针
pt ->结构成员的方式引用相应的结构成员
- C程序设计语言整理笔记(六)结构
- 《C程序设计语言》读书笔记(六)——结构
- Python 程序设计语言 笔记(六)
- C程序设计语言整理笔记(三)控制流
- C程序设计语言整理笔记(四)函数与程序结构
- C程序设计语言整理笔记(五)指针与数组
- C程序设计语言整理笔记(七)输入与输出
- C程序设计语言(K&R)学习笔记--8.结构体
- C程序设计语言(四)结构
- C程序设计语言(六)UNIX系统接口
- 《C程序设计语言》笔记(一)
- 《C程序设计语言》笔记(二)
- 《C程序设计语言》笔记(三)
- C程序设计语言整理笔记(二)类型,运算符与表达式
- 《C++程序设计语言》笔记之六
- C程序设计语言学习笔记(1)
- C程序设计语言学习笔记(2)
- C程序设计语言学习笔记(3)
- 输入一个安升序排列的数组和一个数,在数组中找两个数,使它们的和正好是给定的那个数。o(n)
- 出发
- [USACO]Subset Sums
- 剖析内存的一点补充
- Delphi实现解析百度搜索结果link?url=
- C程序设计语言整理笔记(六)结构
- 求文件中单词出现的频数
- Google Spanner原理- 全球级的分布式数据库
- VS2008安全检查
- 重载双目运算符
- 一次Ajax的503错误的处理
- linux启动过程简述
- 基于导航网格的A星寻路(Navigation mesh)
- BNU 0919 日常训练 之 G N! ——高精度 万进制 10000的阶乘