开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第33天,点击查看活动详情
结构指针
和数组不同,结构变量的名字并不是结构变量的地址,必须用&运算符:struct date *pDate=&today;
结构与函数
结构作为函数参数;
int number of Days(struct date d)
整个结构可以作为参数的值传入函数,这个时候是在函数内新建一个结构变量,并复制调用者的结构的值,也可以返回一个结构,这与数组完全不同。
输入结构
没有直接的方式可以一次scanf一个结构。
结果:输入12,23
输出:12,23 0,0(赋值失败)
这种方式并不适用,C在函数调用时是传值的,所以函数中的p与main中的y是不同的,函数读入p之后,未有任何东西回main。
解决方案
1.在这个输入函数中,完全可以创建一个临时的结构变量,然后把这个结构返回调用者。
2.结构指针作为参数
用->表示指针所指的结构变量中的成员。
传入一个指针,做完处理再返回,这样将来可以用在其它函数调用中。
结构中的结构(在结构中定义一个结构)
struct date{
struct date sdate;
struct time stime;
}
类型定义
自定义数据类型(typedef)
C语言提供了一个叫typedef的功能来声明一个已有的数据类型的新名字。例如:
typedef int Length;
使Length成为int类型的别名,这样Length这名字就可以代替int出现在变量定义和参数声明的地方了。
声明新的类型的名字
新的名字是某种类型的别名;
改善了程序的可读性;
简化了复杂名字。