11 结构体

1. 结构体的介绍

  • 概念介绍
    • 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合
    • 结构体(struct)指的是一种数据结构
    • 结构体是值类型,在方法中传递时是值传递
  • 结构的定义格式
struct 结构体名称 {
    // 属性和方法
}

2. 为什么需要结构体?

  • 先来看一个例子
    • 我们要计算平面坐标里某个点距点Center的距离是否小于200
    • 算起来很简单,勾股定理就搞定了:


      • 其中sqrt(n)用来计算n的平方根
      • pow(x, n)用来计算x的n次方
let centerX : Double = 100
let centerY : Double = 100

func inRange(x : Double, y : Double) -> Bool {
    let disX = x - centerX
    let disY = y - centerX

    let dis = sqrt(pow(disX, 2) + pow(disY, 2))

    return dis < 200
}

let x : Double = 100
let y : Double = 1000

inRange(x, y: y)
  • 问题
    • 但是这样有一个不足,当我们需要比较很多个点和Center的距离的时候,这些数字并不能明确告诉我们它们代表的位置的意义,甚至我们都无法知道它们代表一个数字。
    • 如果我们可以像这样来比较位置:
      • 相比数字,它们看上去就会直观的多
      • 而这,就是我们需要自定义struct类型最直接的原因
inRange(location1)
inRange(myHome)
  • 使用结构进行改进
// 初始化结构体
struct Location {
    var x : Double
    var y : Double
}

// 创建结构体
let location = Location(x: 90, y: 90)

// 优化刚才的方法
func inRange(location : Location) -> Bool {
    let disX = location.x - centerX
    let disY = location.y - centerY

    let dis = sqrt(pow(disX, 2) + pow(disY, 2))

    return dis < 200
}

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

推荐阅读更多精彩内容

  • 8yue18 结构体 结构体是一种值类型,用来封装小型相关变量组,不可以继承,所以不可以写 protected 结...
    cGunsNRoses阅读 888评论 0 0
  • C语言11 结构体 思考: 当需要一个容器能够存储1个字节,你会怎么做? //char当需要一个容器能够存储4个字...
    Asura_Luo阅读 225评论 0 0
  • fcc_load阅读 1,211评论 0 0
  • 周末都好忙,娃说我们好久没带他们出来玩。最近天气如此美好,就来大草坪晒晒秋天温暖的太阳、野餐、玩耍,满血复活~
    mxjkiki阅读 175评论 0 1
  • 印象中夏天总是黏腻的。 吊扇不紧不慢地转着,把白炽灯的光打乱,映在书上,忽明忽暗,支离破碎。叫不出名字的小虫子前赴...
    路回清野阅读 319评论 0 2