C语言程序设计(29)

61 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第33天,点击查看活动详情
结构指针

和数组不同,结构变量的名字并不是结构变量的地址,必须用&运算符:struct date *pDate=&today;

结构与函数

结构作为函数参数;

int number of Days(struct date d)

整个结构可以作为参数的值传入函数,这个时候是在函数内新建一个结构变量,并复制调用者的结构的值,也可以返回一个结构,这与数组完全不同。

输入结构

没有直接的方式可以一次scanf一个结构。

B8BCC5258B98894AD6824EE400DB39DB.jpg

结果:输入12,23

输出:12,23 0,0(赋值失败)

这种方式并不适用,C在函数调用时是传值的,所以函数中的p与main中的y是不同的,函数读入p之后,未有任何东西回main。

解决方案

1.在这个输入函数中,完全可以创建一个临时的结构变量,然后把这个结构返回调用者。

5063D61D88C4F39947F3F884E86C9082.jpg

2.结构指针作为参数

用->表示指针所指的结构变量中的成员。

传入一个指针,做完处理再返回,这样将来可以用在其它函数调用中。

结构中的结构(在结构中定义一个结构)

struct date{

struct date sdate;

struct time stime;

}

类型定义

自定义数据类型(typedef)

C语言提供了一个叫typedef的功能来声明一个已有的数据类型的新名字。例如:

typedef int Length;

使Length成为int类型的别名,这样Length这名字就可以代替int出现在变量定义和参数声明的地方了。

声明新的类型的名字

新的名字是某种类型的别名;

改善了程序的可读性;

简化了复杂名字。