OC基础--结构体 枚举做类成员属性

结构体  枚举作类的成员属性:

  定义一个学生类

  性别 -- 枚举

  生日 入学日期  毕业日期  --  结构体

代码示例:

声明文件 Student.h:

#import <Foundation/Foundation.h>
typedef struct {
    int year;
    int month;
    int day;
} Date;
typedef enum {
    kGenderGirl = 0,
    kGenderBoy = 1,
    kGenderChunGe = 2
} Gender; 

@interface Student : NSObject
{
    @public
    int _age;
    NSString* _name;
    Gender _gender;
    // 生日
    Date _birthday;
    // 入学时间
    Date _entranceTime;
    // 毕业时间
    Date _graduation;
}
// 自我介绍
- (void) selfIntroduce;
// 枚举值转换为性别
+ (NSString*) getGenderByEnumValue:(Gender) gender;
@end 

实现文件 Student.m:      

#import "Student.h"

@implementation Student
// 输出信息
- (void)selfIntroduce{
    // 实例方法中调用类方法
    NSString* gender = [[self class] getGenderByEnumValue:_gender];
    // 实例方法访问成员变量

    NSLog(@"大家好,我是:%@, 性别:%@, 年龄:%i, 我是 %i年%i月%i号 破壳的  上天安排我在 %i年%i月%i号 进入本校来虐死你们  哈哈  %i年%i月%i号 虐死你们后  哥就走了", _name, gender, _age, _birthday.year, _birthday.month, _birthday.day, _entranceTime.year, _entranceTime.month, _entranceTime.day, _graduation.year, _graduation.month, _graduation.day);
}
// 性别枚举值转换为字符串
+ (NSString *)getGenderByEnumValue:(Gender)gender{
    NSString* sex;
    switch (gender) {
        case 0:
            sex = @"女";
            break;
        case 1:
            sex = @"男";            break;
        case 2:
            sex = @"春哥";
            break;
        default:
            sex = @"我是妖";
            break;
    }
    return sex;
}
@end 

Main.m:                    

#import <Foundation/Foundation.h>
#import "Student.h" 

int main(int argc, const char * argv[]) {
    Student * stu = [Student new];
    stu->_name = @"小马";
    stu->_age = 30;
    stu->_gender = kGenderChunGe;
    // 结构体成员赋值  方式一
    stu->_birthday = (Date){1985, 11, 11};
    // 方式二    stu->_entranceTime.year = 2000;
    stu->_entranceTime.month = 9;
    stu->_entranceTime.day = 23;    

    // 方式三
    Date date = {.year = 2004, .month = 9, .day = 21};
    stu->_graduation = date;
    [stu selfIntroduce];   

    return 0;
} 

/*

  2015-08-27 23:58:16.727 结构体  枚举做类成员[938:44544] 大家好,我是:小马, 性别:春哥, 年龄:30, 我是 1985年11月11号 破壳的  上天安排我在 2000年9月23号 进入本校来虐死你们  哈哈  2004年9月21号 虐死你们后  哥就走了

*/

 
时间: 2024-10-13 18:45:34

OC基础--结构体 枚举做类成员属性的相关文章

C#基础 结构体 枚举类型

结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fenshu; public string name; public string sex; public int sum; } 以上的语句就是定义一个名称为student的结构体,其中包含int类型的年龄.分数.总和,和string类型的姓名.性别. 二.用法: 在main主函数外面定义了一个名称为st

2016.8.3 C#基础 结构体,枚举类型

结构体-枚举类型 一.枚举类型 枚举(enum)是值类型的一种特殊形式,它从System.Enum继承而来,并为基础类型的值提供替代名称.枚举类型有名称.基础类型和一组字段.基础类型必须是一个除char 类型外的内置的有符号(或无符号)整数类型(如Byte.Int32或UInt64).也可以说,枚举类型是一组常量的集合. 1.定义:Enum....{E} 枚举元素的默认基础类型为int.默认情况下,第一个枚举数的值为0,后面每个枚举数的值依次递增1.例如: enum meiju://枚举是常量的

黑马程序员---C语言基础---结构体

------iOS培训.Java培训.Android培训, iOS学习型技术博客,期待与您交流------ C语言基础---结构体 一.什么是结构体 介绍结构体之前,我想先简单介绍下数组.我想大家对数组都再熟悉不过了,顾名思义,数组就是将一些数据(元素)组合在一起,作为一个整体.使用数组需要注意的是这些元素必须是相同类型.而结构体和数组类似,也是将一些数据组合在一起作为一个整体,但是这些元素可以是不同类型.可以这么理解:结构体是更加灵活的数组,因为它允许元素是不同的类型. 实际生活中,如果我们要

面向对象基础——结构体

1.结构体的语法 定义的时候需要使用关键字struct [public] struct 结构名 { public 类型名 变量名; … } 我们常见的结构体:System.Drawing.Point.Size.Color 注意: 1.结构使用时可以new,也可以不new.如果不new,则使用前必须为结构成员赋值. 2.在结构中不能为变量直接赋初值,除非const(常量).static(静态变量) 2.结构体与类 它们是 .NET Framework 中的通用类型系统的两种基本构造.两者在本质上都

OC常见结构体NSRange、NSPoint、NSSize、NSRect

NSRange:这个结构体有两个成员变量分别是location和length,比如OC字符串@"My name is HeiMa"中‘name’的NSRange为{3,4}(空格也算)C数组中{1,4,6,7,3}6.7的NSRange为{2,2} 1 // 第一种赋值方式,开发中很少用 2 NSRange range1 = {2,6}; 3 // 第二种赋值方式,依然很少用 4 NSRange range2 = {.location = 2,.length = 6}; 5 // 第三

C 碎片八 结构体&amp;枚举&amp;联合

一.结构体 1, 结构体定义 结构体类型的定义:任意数据类型变量的集合,用于描述一个具体的事物的信息.在C语言中描述一件事物一般都是用结构体 声明结构体类型的格式: struct  结构体名 {成员列表}: 一般形式: //结构体定义一般形式 struct 结构体名 { 成员变量1; //成员变量后面是';' 成员变量2; .... }; //这里最后加';' 不能省略 例: struct Student { char name[30]; int age; double score; }; 说明

结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法

结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占用int长度空间,空数组不占任何空间.“这个数组不占用任何内存”,意味着这样的结构节省空间:“该数组的内存地址就和它后面的元素地址相同”,意味着无需初始化,数组名就是后面元素的地址,直接就能当指针使用. 这样的写法最适合制作动态buffer,因为可以这样分配空间malloc(sizeof(struc

C基础--结构体

C语言,结构体语法: 1.定义结构体类型: struct 结构体名称 { 成员类型 成员名称1; 成员类型 成员名称2; ... }; 例:struct Date { int year ; int month ; int day ; } 2.结构体在内存中 例一: struct Student { char *name;//指针占8个字节 int no;//int占4个字节 int age;//int占4个字节 }; struct Student s1 ; int length = sizeof

poj 2243 bfs 利用 结构体中的step成员保存步数 ,STL的队列

//BFS #include <iostream> #include <queue> using namespace std; bool used[8][8]; int move[8][2]={1,2, -1,2, -2,1, -2,-1, -1,-2, 1,-2, 2,-1, 2,1}; struct position { int i,j; int step; position(int a,int b,int c) { i=a; j=b; step=c; } }; int mai