c语言入门14,如何用C语言描述一只猫?C语言的结构体介绍
发表于: 2018-11-09 18:25:22 | 已被阅读: 26 | 分类于: C语言
还记得刚开始接触 C 语言的时候,为了描述一个平行四边形的边长和对角线长,我定义了四个变量:短边长 a,长边长 b,对角线1长 d1,对角线2长 d2。在写代码的过程中,发现又要定义一个平行四边形,于是我不得不又定义了四个变量:a2,b2,d12,d22,结果变量又多又乱,写代码很不舒服,太容易弄混了。当时我还想,幸好没有第三个,第四个平行四边形。
后来,我发现原来 C 语言原来可以定义
C 语言中的结构体(复合数据类型)
到目前为止,前面 13 节使用的大多数数据类型都具有单一的值,我们用到了整数,字符,真假值,小数,在 C 语言中(或者说编程语言中)这些数据类型通常被称作
那什么是
本节打算介绍的
用 C 语言制定一个描述平行四边形边长和对角线长的结构体数据类型。
这个需求是容易实现的,我们用 double 类型来描述“长度”,那么结构体可以如下定义:
struct parallelogram{
double a, b, d1, d2;
};
// 或者也可以写成
struct parallelogram{
double a;
double b;
double d1;
double d2;
};
要注意的是,结构体定义完后,大括号后面要用 “;”结束。parallelogram 并不表示一个变量,它表示一种
struct parallelogram{
double a, b, d1, d2;
}p1, p2;
struct parallelogram{
double a, b, d1, d2;
};
struct parallelogram p3, p4;
这样定义的 p3 和 p4 与上面那种方式定义的 p1 和 p2 是一样的。如果采用上面那种定义方式,parallelogram 也可以不写:
struct{
double a, b, d1, d2;
}p1, p2;
但是这样就没有办法再引用这个结构体类型了,因为它没有名字。
定义好变量后,就可以用“.”运算符来访问结构体的各个成员了。例如:
p1.a = 2;
p1.d1 = 3;
p2.b = 5;
p2.d2 = 7;
C 语言结构体的初始化
我们使用基础数据类型时,初始化很方便,直接赋值就可以了,结构体怎么初始化呢?请看:
double x = 3.0;
struct parallelogram p1 = {x, 4.0, 5.0, 5.0}; // p1.a = 3.0, p1.b=4.0, p1.d1=5.0, p1.d2=5.0
struct parallelogram p2 = {3.0, }; // p2.a = 3.0, p2.b=0.0, p2.d1=0.0, p2.d2=0.0
struct parallelogram p3 = {}; // p3.a = 0.0, p3.b=0.0, p3.d1=0.0, p3.d2=0.0
这几种方式都是可以的,只不过要是使用第一种方式定义,p1 必须是局部变量。p1 若是全局变量,就只能用常数表达式定义了。另外需要特别注意的是,一旦变量定义好了,就不能直接用下面种方式赋值了,但是同类型之间可以赋值:
struct parallelogram p1;
struct parallelogram p2 = {3.0, };
p1 = {3.0, 4.0, 5.0, 5.0}; // 非法
p1 = p2; //合法
#include <stdio.h>
int main()
{
struct parallelogram{
double a, b, d1, d2;
} p;
double a = 3.0;
p.a = 3.0;
p.b = 4.0;
p.d1 = 5.0;
p.d2 = 5.0;
printf("d1 of parallelogram is: %f\n", p.d1);
return 0;
}
好了,学会了C语言的结构体,就算是要描述一只猫,也不怕了。