黑马程序员技术交流社区
标题:
oc 类方法中变量这里为何是这样?
[打印本页]
作者:
lewisen
时间:
2014-5-7 23:25
标题:
oc 类方法中变量这里为何是这样?
本帖最后由 lewisen 于 2014-5-12 09:21 编辑
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
@public
int age;
double weight;
}
-(void)walk;
@end
@implementation Person
-(void)walk
{
NSLog(@"年龄是%d、体重是%.2f的人在散步。",age,weight); //为什么不是p-〉age
}
@end
int main()
{
Person *p = [Person new];
p->age = 30;
p->weight =70;
[p walk];
return 0;
}
复制代码
如上所示,在方法中的两个属性变量为什么不是p->age 和 p->weight,而是不加p呢?求两者区别,谢谢
作者:
崔维友
时间:
2014-5-8 08:08
本帖最后由 崔维友 于 2014-5-8 08:10 编辑
你可以比照一下这段代码:
#import <Foundation/Foundation.h>
@implementation Person : NSObject
{
@public
int age;
double weight;
}
-(void)walk
{
NSLog(@"年龄是%d、体重是%.2f的人在散步。",age,weight); //内部变量
}
@end
int main()
{
Person *p = [Person new];
p->age = 30;
p->weight =70;
[p walk];
return 0;
}
复制代码
当不使用指针访问的时候其实相当于内部变量,比照C语言就明白了。
作者:
葬花桥
时间:
2014-5-8 08:27
指针p是在main函数是定义的啊,它只能在main函数中用,在方法中你可以再定义一个p,但是这两者是不同的两个变量。这是变量的作用域问题
作者:
Jine
时间:
2014-5-8 22:10
因为 NSLog(@"年龄是%d、体重是%.2f的人在散步。",age,weight); 它是将p里的成员变量输出和显示出来,而p-
>age 和 p->weight是给成员变量赋值啊!所以 不能用p->age 和 p->weight不然肯定出错!
作者:
詹绪长
时间:
2014-5-11 10:46
p->age 和 p->weight是给age 和weight 赋值( p->age = 30;p->weight =70;),所以达不到你想要的结果。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2