免费开源的iOS开发学习平台

结构struct:1-结构的定义与基本使用

Objective-C中除了类之外,还定义了结构struct用来存储变量。在一些场景下,类和结构是可以通用的。

假如我们希望存储日期,包含:年、月、日三个变量,那么可以考虑定义一个Date类,其中包含3个int类型的属性,分别存储year,month和day。另外,我们也可以使用结构来定义一个新的数据类型。

结构类型的定义

可以使用如下方法来定义结构类型。

struct 结构体名称 {
    成员变量类型 成员变量名称;
    成员变量类型 成员变量名称;
    成员变量类型 成员变量名称;
    ...;
};

例如:我们可以定义一个结构体类型Date来存储日期。

    //定义名为Date的结构体
    struct Date {
        int day;
        int month;
        int year;
    };

结构变量的声明

声明一个结构体变量,会在内存中分配空间,等待给成员变量赋值。声明结构体变量的方式为:

struct 结构体名称 结构体变量名称;

例如:

    //声明一个名为today的结构体变量,类型为date,此时会分配内存空间,用来存储日月年
    struct Date today;

结构变量的赋值/初始化

结构变量的初始化以及赋值可以采用如下两种方式。

  • 使用点语法赋值。
    //初始化
    today.day = 2;
    today.month = 9;
    today.year = 2016;
  • 在定义结构体变量时,直接赋值。
    struct Date tomorrow = {3,9,2016};

结构成员变量的访问

我们可以使用点语法来获取结构中成员变量的值。

void structTest () {
    //定义名为Date的结构体
    struct Date {
        int day;
        int month;
        int year;
    };
    
    //声明一个名为today的结构体变量,类型为date,此时会分配内存空间,用来存储日月年
    struct Date today;
    
    //初始化
    today.day = 2;
    today.month = 9;
    today.year = 2016;
    
    struct Date tomorrow = {3,9,2016};
    
    //访问
    NSLog(@"今天是:%d年%d月%d日",today.year,today.month,today.day);
    NSLog(@"明天是:%d年%d月%d日",tomorrow.year,tomorrow.month,tomorrow.day);
}

运行结果:

示例代码

https://github.com/99ios/6.5.1