先看看结构体是什么:
首先大致为这三种声明,point是结构名字,p1 、p2是结构变量。
结构体 struct
- 声明: struct 结构体名字 { 成员 }; (在函数外内都行,常在外)
- 结构变量:struct date today; (today为结构变量,date是结构体名字,两者完全不同)
- 结构体里用 .运算符+名字访问其成员 (.运算符取成员)
- 输出则是变量名
.
成员名 printf(“Today’s day is %i-%i-%i.\n”, today.month, today.day, today.year); %i指定整数 .
声明结构类型
这是最常见的声明形式,它只是单单人为定义了一个新的结构类型,结构类型不参与运算,没有实体,相当int、double这种单单只是类型名字。
month、day、year是结构体里的成员
结构的初始化
- today才是参与运算的变量
- 第一种是按成员顺序依次赋值
.
运算符是取成员,在第二种里就是让 thismonth 里的month=4,day=30
结构运算
与数组不同结构体变量可以直接互相赋值(数组必须通过遍历实现赋值)
也可以强制类型转换 tomorrow = (struct date) {05, 1, 2022};
结构指针
与数组不同,结构体需要&取地址,指向的是结构变量的地址。
用->表示指针所指的结构变量中的成员
- struct date *p = &today
- (*p).month = 12 <==> p->month = 12
结构体变量也可做函数中的参数。