C程序设计语言整理笔记(六)结构
2012-09-19 21:31
197 查看
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程序设计语言整理笔记(五)指针与数组
- C程序设计语言整理笔记(七)输入与输出
- C_PlusPlus学习笔记 - 4_C++程序结构 (C++语言程序设计【第三版】 郑莉等,清华大学出版社)
- C程序设计语言整理笔记(二)类型,运算符与表达式
- C程序设计语言整理笔记(三)控制流
- C语言程序设计 练习题参考答案 第三章 (2) 选择结构
- 5.24~6.4-Python-语言及其应用-笔记-代码结构
- Perl语言入门笔记 第十五章 智能匹配与given-when结构
- C#与.NET4 高级程序设计-----语言特性 学习笔记
- C_PlusPlus学习笔记 - 5_数组、指针和字符串 (C++语言程序设计【第三版】 郑莉等,清华大学出版社)
- Python语言程序设计-学习笔记2:Python编程之基本方法
- 【算法竞赛入门经典】第二章:循环结构程序设计 代码及笔记
- C程序设计语言学习笔记(一)
- c语言与程序设计笔记:指针篇 (1)
- 汇编语言笔记整理(三)
- ELK stack权威指南知识结构整理阅读笔记
- Java语言的基本程序设计结构
- C++程序设计语言学习笔记(一)
- C++程序设计语言学习笔记(三)