第3周:结构类型——3.2 结构

1.结构

如果你想表达的数据比较复杂,它不是一个值(如日期、时间)。希望用一个整体表达结合在一起的数据。

一个结构就是一个复合的数据类型,在里面可以有很多各种类型的成员,然后我们用一个变量来表达那么多的数据。


2.声明结构类型


第一种形式最常见。x,y 表示结构里的成员,将来每一个 point 里都会有这两个成员。上面声明结构,下面定义变量。

初学者最常见的错误:漏了分号。

和本地变量一样,在函数内部声明的结构类型只能在函数内部使用。

所以通常在函数外部声明结构类型,这样就可以被多个函数所使用。

结构类型和结构变量是两件事情。


3.结构的初始化


对于结构,用大括号赋值。和数组初始化差不多,没给值的填 0 。


4.结构成员

结构和数组有点像。

数组用 [ ] 运算符和下标访问其成员,结构用 . 运算符和名字访问其成员。

数组里头有很多单元,结构里头有很多成员。数组里头必须是相同类型,结构成员可以是不同类型。


5.结构运算

要访问整个结构,直接用结构变量名字。

对于整个结构,可以做赋值、取地址,也可以传递给函数参数。



6.结构作为函数参数

int numberOfDays(struct date d);

整个结构可以作为参数的值传入函数,也可以返回一个结构。

这时候是在函数内新建一个结构变量,并复制调用者的结构的值。在函数里头,作为参数它是一个新的结构变量。


7.结构指针作为参数

和数组不同,结构变量的名字并不是结构变量的地址,必须使用 & 运算符。

struct date *pDate = &today;

传指针更有效率,在函数内建立一个结构变量既费空间又费时间。

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

struct date *p = &myday; p->month = 12;

如果需要保护传入的结构不被函数修改,const struct date *d;

函数返回传入的指针是一种套路,将来可以串在其他函数调用中。


8.结构中的结构


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,542评论 1 51
  • 重新系统学习下C++;但是还是少了好多知识点;socket;unix;stl;boost等; C++ 教程 | 菜...
    kakukeme阅读 20,046评论 0 50
  • 一、框架 1、Mac系统及常用工具、进制;C数据类型、常量变量、运算符、表达式、格式化输入输出 2、关系运算符、逻...
    师景福阅读 744评论 0 2
  • Summary and Reflection The humanity of Su Tongpo is the t...
    沁语阅读 322评论 0 0
  • 我知道我的脾气不好,我也知道我的命运更是苟延残喘。
    鸭梨666阅读 193评论 0 0