1.结构体成员变量
设计一个”学生“类
1> 属性
* 姓名
* 生日
用结构体作为类的实例变量(生日)
//
// main.m
// 结构体作为对象的属性
//
// Created by wenjim on 17/9/7.
// Copyright 2017年 WenJim. All rights reserved.
//
#import <Foundation/Foundation.h>
/*
合理的设计一个“学生”类
学生有* 姓名 * 生日 两个属性和说出自己姓名生日的方法
要求利用设计的学生类创建学生对象,并说出自己的性命和年龄
描述学生类
事物名称:学生(Student)
属性:姓名(name),生日(birthday)
行为:说出自己的性命和生日(say)
*/
typedef struct {
int year;
int month;
int day;
} Date;
/*
struct Date {
int year;
int month;
int day;
};
*/
@interface Student : NSObject
{
@public
NSString * _name;
// struct Date birthday;
Date _birthday;
}
-(void)say;
@end
@implementation Student
-(void)say
{
NSLog(@"名字:%@, 生日: %i-%i-%i",_name,_birthday.year,_birthday.month,_birthday.day);
}
@end
int main(int argc, const char * argv[]) {
// 1.创建学生对象
Student * student = [Student new];
// 2.设置学生对象的属性
student -> _name = @"CWJ";
// 2.1 结构体只能在定义的时候初始化
// 2.2 系统并不清楚它是数组还是结构体
//因为结构体已经初始化为0了,在次初始化就报错了,但是可以逐个赋值。
// student -> _birthday = (Date){1992,2,22};
student -> _birthday.year = 1993;
student -> _birthday.month = 2;
student -> _birthday.day = 22;
//也可以整体赋值
Datedate={1993,11,11};
student ->_birthday = date;
// 3.让学生说出自己的姓名和生日
[student say];
Date d1 = {1993,10,17};
Date d2;
d2 = d1; // 本质是将d1所有的属性的值都拷贝一份赋值给d2
d2.year = 1995;
printf("d1 = year = %i\n",d1.year);
printf("d2 = year = %i\n",d2.year);
return 0;
}