A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lewisen 中级黑马   /  2014-5-7 23:25  /  1540 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 lewisen 于 2014-5-12 09:21 编辑
  1. #import <Foundation/Foundation.h>
  2. @interface Person : NSObject
  3. {
  4.     @public
  5.     int age;
  6.     double weight;
  7. }

  8. -(void)walk;
  9. @end


  10. @implementation Person
  11. -(void)walk
  12. {
  13.     NSLog(@"年龄是%d、体重是%.2f的人在散步。",age,weight);   //为什么不是p-〉age
  14. }
  15. @end

  16. int main()
  17. {
  18.     Person *p = [Person new];
  19.     p->age = 30;
  20.     p->weight =70;
  21.     [p walk];
  22.     return 0;
  23. }
复制代码


如上所示,在方法中的两个属性变量为什么不是p->age 和 p->weight,而是不加p呢?求两者区别,谢谢

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 崔维友 于 2014-5-8 08:10 编辑

你可以比照一下这段代码:
  1. #import <Foundation/Foundation.h>

  2. @implementation Person : NSObject
  3.         {
  4.             @public
  5.             int age;
  6.             double weight;
  7.         }
  8.         -(void)walk
  9.         {
  10.             NSLog(@"年龄是%d、体重是%.2f的人在散步。",age,weight);   //内部变量
  11.         }
  12. @end

  13. int main()
  14. {
  15.     Person *p = [Person new];
  16.     p->age = 30;
  17.     p->weight =70;
  18.     [p walk];
  19.     return 0;
  20. }
复制代码

当不使用指针访问的时候其实相当于内部变量,比照C语言就明白了。





回复 使用道具 举报
指针p是在main函数是定义的啊,它只能在main函数中用,在方法中你可以再定义一个p,但是这两者是不同的两个变量。这是变量的作用域问题
回复 使用道具 举报
因为 NSLog(@"年龄是%d、体重是%.2f的人在散步。",age,weight);  它是将p里的成员变量输出和显示出来,而p-

>age 和 p->weight是给成员变量赋值啊!所以 不能用p->age 和 p->weight不然肯定出错!
回复 使用道具 举报
p->age 和 p->weight是给age 和weight 赋值( p->age = 30;p->weight =70;),所以达不到你想要的结果。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马