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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王雪冬 中级黑马   /  2014-4-16 17:05  /  1230 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由  王雪冬 于 2014-4-16 17:42 编辑

看下面的代码:
  1. @interface Car : NSObject
  2. {// 成员变量
  3.     @public
  4.     int wheels;
  5.     int speed;
  6. }

  7. - (void)run;
  8. @end

  9. @implementation Car
  10. - (void)run
  11. {
  12.     NSLog(@"%d个轮子,速度为%dkm/h的车子跑起来", wheels, speed);
  13. }
  14. @end


  15. void test1(Car *newC)
  16. {
  17.     newC->wheels = 5;
  18. }

  19. void test2(Car *newC)
  20. {
  21.     Car *c2 = [Car new];
  22.     c2->wheels = 5;
  23.     c2->speed = 300;
  24.    
  25.     newC = c2;
  26.     newC->wheels = 6;
  27. }

  28. int main()
  29. {
  30.     Car *c = [Car new];
  31.     c->wheels = 4;
  32.     c->speed = 250;
  33.    
  34.     test2(c);
  35.    
  36.     [c run];
  37.    
  38.     return 0;
  39. }
复制代码



问什么执行完[c run]
打印出来的  wheel=4   speed=200   。而没有重新赋值呀?



评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

2 个回复

倒序浏览
这个。。。排版。。。
回复 使用道具 举报
嗯因为这句:newC = c2;

这句是把newC的指针指向了c2这个对象,改动的是c2对象的成员属性

所以还是没有影响c这个对象。

如果你写这句。。就会改变c这个对象的成员属性

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马