OC语言day02-05结构体作为对象属性

pragma mark 结构体作为对象属性

pragma mark 概念

pragma mark 代码

#import 
/**
 合理的设计一个 学生 类
 学生有 姓名 生日两个属性 和 说出自己姓名 生日 方法
 要求 利用 设计学生类创建学生对象, 并说出自己的姓名和年龄
 
 描述学生类
 
 实物名称: 学生(Student)
 属性: 姓名(name), 生日(birthday)
 行为: 说出 姓名 和 生日(say)
 */
#pragma mark 类

typedef struct
{
    int year;
    int month;
    int day;
    
} Date;
@interface Student : NSObject
{
    @public
    NSString *_name;
    
    Date _birthday;
}

-(void)say;


@end

@implementation Student

-(void)say
{
    NSLog(@"name = %@ year = %i, month = %i, day = %i, ",_name,_birthday.year,_birthday.month,_birthday.day);
    
}

@end

#pragma mark main函数
int main(int argc, const char * argv[])
{
    // 1.创建学生对象
    // 1.开辟存储空间
    // 2.初始化属性
    // 3.返回地址
    Student *s  = [Student new];
    
    // 2.设置学生对象的属性
    s->_name = @"lyh";
    //  1.结构体只能在定义的时候 初始化
    //  2. 系统并不清楚 它是 数组 还是结构体
//    s->_birthday = {1992,4,22};
    // 一次性初始化
//    s->_birthday = (Date){1992,4,22};// 强制类型转换 告诉系统它说一个 结构体
//    Date d = {1992,04,22}; 千万不要写成 04 因为我们保存的是二进制 如果在前面加上0 表示了八进制 那么 09 就会报错
    Date d = {1992,4,22};

    s->_birthday = d;
    // 逐个初始化
    s->_birthday.year = 1992;
    s->_birthday.month = 4;
    s->_birthday.day = 22;

    // 3.让学生说出自己的姓名 和 生日
    [s say];
    
#warning 结构体的本质
    /*
    Date d1 = {2000,1,1};
    Date d2;
    d2 = d1;    // 本质是d1所有的属性的值 都拷贝了一份 赋值给d2;
    
    d2.year = 2002;
    printf("d1 = year = %i\n",d1.year);
    printf("d2 = year = %i\n",d2.year);
     */
    return 0;
}

你可能感兴趣的:(OC语言day02-05结构体作为对象属性)