结构体是自定义的数据结构,类次数组,在内存中也是线性存储的。不同的是数组的每一个元素的数据类型必须一致,结构可以存放不同数据类型的元素。
结构体使用类次面向队形的类与对象,元素可以使用点号运算符进行访问。
下面是一个简单的例子:
/**
就算圆的面积,周长使用结构体
*/
//定义点的结构
typedef struct
{
double x;
double y;
}Point;
//定义圆的结构
typedef struct
{
Point p;//圆心
double r;//圆的半径
}Circle;
#include
const double PI=3.141592653;
void main()
{
Point p;//定义圆心
Circle c;
printf("输入圆心的坐标(x,y):");
scanf("%lf,%lf",&p.x,&p.y);
c.p=p;
printf("输入圆的半径:");
scanf("%lf",&c.r);
printf("圆心为:(%.2lf,%.2lf)\n",c.p.x,c.p.y);
printf("面积为:%lf\n",c.r*PI*PI);
printf("周长为:%lf\n",2*c.r*PI);
printf("Point占%d字节的内存\n",sizeof(Point));//8+8=16
printf("Circle占%d字节的内存\n",sizeof(Circle));//16+8=24
}测试:
输入圆心的坐标(x,y):2,3
输入圆的半径:2
圆心为:(2.00,3.00)
面积为:19.739209
周长为:12.566371
Point占16字节的内存
Circle占24字节的内存
Process returned 21 (0x15) execution time : 5.507 s
Press any key to continue.