@mwumli
2015-05-18T10:09:03.000000Z
字数 1197
阅读 1591
SPLOS
OSEP
有的时候,我们希望把一组数据聚合起来,表示它们有着某种关系,应该作为一个整体处理
而基本类型根本做不到这一点,数组也只能做到把同类型的一组数据聚集
这时,结构体的出现就解决了这个问题
结构体在 SPLOS
语言中用关键字 struct
来定义
结构体是先定义后使用,定义之后,它就是一个可以像基本类型int
,char
一样被使用的数据类型
我们可以用定义好的结构定义结构体变量来存储数据
struct square {
int length;
int width;
};
struct square it={20, 40};
说明:
1. 定义结构体也是一个语句,因此末尾需要添加 ;
2. 结构体定义中的每一项被称作结构体成员,都是用其他数据类型定义的变量
3. 每一个结构体成员末尾都有一个 ;
4. 这里定义的结构体可用来表示一个矩形,矩形的长和宽被存储其中
5. it
是我们使用新定义的结构体来定义的结构体变量,并且初始后结构提成员为20, 40
struct square {
int length;
int width;
};
struct square it={20, 40};
it.width = 80;
it.length = 67;
说明:
1. 我们使用成员运算符 .
来取得结构体变量的每一个成员,从而对其的值进行加,减,改变 ‘
2. 成员运算符 .
的前后不能有空隙
3. 操作的一般表达式:结构体变量.结构提成员
#import {
splos_io.p; //导入标准输入输出模块
}
struct square {
int length;
int width;
};
int getSquare(struct square a)
{
int area;
area = a.width * a,square;
return area;
}
void print(int area1, int area2)
{
sp_printf_string("宽度改变前的面积:");
sp_printf_num(area1);
sp_printf_char('\n');
sp_printf_string("宽度改变后的面积:");
sp_printf_num(area2);
sp_printf_char('\n');
}
int main()
{
int area1, area2;
struct square sq = {20, 40};
area1 = getSquare(sq);
sq.width = 34; //改变结构体成员`width`的值
area2 = getSquare(sq);
print(area1, area2);
return 0;
}
说明:
1. 定义了结构体struct square
,用来定义结构提变量,来存储矩形的长和宽
2. 定义了计算矩形面积的函数getSquare
,把结构体变量作为参数传递计算矩形的所有数据
3. 最后定义了输出函数,输出改变宽度前和宽度后面积的变化
4. 利用标准输入输出模块splos_io.p