您的位置:首页 > 其它

C程序设计语言整理笔记(六)结构

2012-09-19 21:31 197 查看

1. 结构的基本知识

Ø 结构是一个或多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组织在一个名字之下

Ø 结构可以拷贝、赋值、传递给函数,函数也可以返回结构类型的返回值

Ø
struct point
{
int x;
int y;
};

关键字struct引入结构声明:
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 ->结构成员
的方式引用相应的结构成员
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: