结构体

作者: 西门丨不吹雪 | 来源:发表于2016-09-05 16:19 被阅读11次

结构体:
结构体是用于封装不同或相同类型的数据的, Swift中的结构体是一类类型, 可以定义属性和方法(甚至构造方法和析构方法等)

格式:
struct 结构体名称 {
结构体属性和方法
}

struct Rect {
   var width:Double = 0.0
   var height:Double = 0.0
}

如果结构体的属性有默认值, 可以直接使用()构造一个结构体
如果结构体的属性没有默认值, 必须使用逐一构造器实例化结构体

var r = Rect()
print("width = \(r.width) height = \(r.height)")

结构体属性的访问使用.语法

r.width = 100
r.height = 99
print("width = \(r.width) height = \(r.height)")

结构体构造器
Swift中的结构体和类跟其它面向对象语言一样都有构造函数, 而OC是没有的
Swift要求实例化一个结构体或类的时候,所有的成员变量都必须有初始值, 构造函数的意义就是用于初始化所有成员变量的, 而不是分配内存, 分配内存是系统帮我们做的.
如果结构体中的所有属性都有默认值, 可以调用()构造一个结构体实例
如果结构体中的属性没有默认值, 可以自定义构造器, 并在构造器中给所有的属性赋值
其实结构体有一个默认的逐一构造器, 用于在初始化时给所有属性赋值

struct Rect2 {
   var width:Double
   var height:Double = 0.0
}
逐一构造器
var r1 = Rect2(width: 10.0, height: 10.0)

错误写法, 顺序必须和结构体中成员的顺序一致
var r1 = Rect2(height: 10.0, width: 10.0)

错误写法, 必须包含所有成员
var r1 = Rect2(height: 10.0)

结构体中定义成员方法
在C和OC中结构体只有属性, 而Swift中结构体中还可以定义方法

struct Rect3 {
   var width:Double
   var height:Double = 0.0
// 给结构体定义一个方法, 该方法属于该结构体
// 结构体中的成员方法必须使用某个实例调用
// 成员方法可以访问成员属性
func getWidth() -> Double{
    return width
}
}
var r2 = Rect3(width: 10.0, height: 20.0)

结构体中的成员方法是和某个实例对象绑定在一起的, 所以谁调用, 方法中访问的属性就属于谁
 print(r2.getWidth())
var r3 = Rect3(width: 30.0, height: 20.0)
取得r2这个对象的宽度
print(r3.getWidth())

结构体是值类型

struct Rect4 {
   var width:Double
   var height:Double = 0.0
   func show() -> Void{
    print("width = \(width) height = \(height)")
    }
}

var r4 = Rect4(width: 10.0, height: 10.0)
var r5 = r4

赋值有两种情况
1.指向同一块存储空间
2.两个不同实例, 但内容相同
r4.show()
r5.show()
r4.width = 20.0

结构体是值类型, 结构体之间的赋值其实是将r1中的值完全拷贝一份到r2中, 所以他们是两个不同的实例
r4.show()
r5.show()

相关文章

  • 结构体

    [toc] 结构体的定义方式 先定义结构体类型,再定义结构体变量 定义结构体类型的同时定义结构体变量 定义结构体类...

  • 【C语言笔记】<十九>结构体

    结构体的基本概念 结构体初始化 结构体的内存存储细节 结构体定义的方式 结构体类型的作用域 指向结构体的指针 结构...

  • C结构体和链表

    一,结构体变量定义及初始化 二,无名结构体 备注:无名结构体很少使用 三,宏定义结构体 四,结构体嵌套 五,结构体...

  • 结构体

    结构体定义* 结构体中的格式:* struch 结构体名* {* 结构体成员变量* }* 结构体中的特点* 1.结...

  • 结构体数组的定义

    结构体数组的定义 1、先定义结构体类型,再定义结构体数组 2、定义结构体类型的同时定义结构体数组 3、省略结构体类...

  • C#结构体,析构方法,跨程序访问

    结构体 结构体定义 结构体的语法格式: struct + 结构体名 { 结构体成员变量(相当于类中的字段) } 结...

  • 结构体

    结构体有名定义 无名定义 结构体嵌套定义 结构体内存对齐 结构体成员初始化 结构体变量引用 结构体的有名定义:直白...

  • 菜鸡学Swift3.0 13.结构体

    结构体 struct 是值类型 1.定义结构体 struct 结构体类型 { var 结构体属性:类型 ...} ...

  • 结构体

    结构体初识 结构体指针 结构体的匿名字段 结构体嵌套 Go语言中的OOP

  • C语言 第九章 结构体

    [TOC] 第九章结构体 结构体的定义 结构体定义2 指针表示结构体

网友评论

      本文标题:结构体

      本文链接:https://www.haomeiwen.com/subject/fevrettx.html