黑马程序员技术交流社区
标题:
大神解答下#pragma mark - 狗类
[打印本页]
作者:
大雕会飞
时间:
2015-11-16 22:58
标题:
大神解答下#pragma mark - 狗类
字数限制没有帖全。
typedef enum
{
kIColorBlack,
kIColorGreen,
kIColorBlue
}IColor;
typedef enum
{
kSexMale,
kSexFeMale,
KSexYao
}Sex;
@interface Dog : NSObject
{
@public
IColor _color;// 颜色
int _speed;// 速度
Sex _sex;// 性别
float _weight;// 体重
}
// 吃
- (void)eat;
// 咆哮
- (void)bark;
// 跑
- (void)run;
。。。。。。
#pragma mark - 人类
@interface Person : NSObject
{
@public
NSString *_name;// 名称
Dog *_dog;// 狗 0fcc1 问题:这里为什么要这样创建???是创建一个Dog类的狗?为什么要用指针类呢?
}
// 喂狗
- (void)feedDog;
// 遛狗
- (void)liuDog;
@end
// 1.创建人对象
Person *p = [Person new];
p->_name = @"jack";
// 2.创建一条狗
Dog *d = [Dog new];
d->_color = kIColorBlack;
d->_sex = KSexYao;
// 把狗给人
p->_dog = d;//0fcc1把地址d给p指向的dog空间是啥意思??
[p feedDog];
[p liuDog];
return 0;
}
作者:
liury
时间:
2015-11-17 21:21
1.问题一,_dog是一个指针,只不过指向的数据不是简单的int而是一个复杂的数据块(Dog类)。此时Dog类并没有创建。可以这么理解,台式电脑生产时会预留USB接口,但是生产时没有实际的U盘也能造电脑。
2.问题二,p->dog = d; p->_dog 和 d都是变量,这里是吧d变量的值传递给p->_dog变量。
感觉你纠结是没分清变量的地址和变量的值:
变量地址相当于门牌号,是不能修改的;变量的值是门内的东西,是可以变化的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2