黑马程序员技术交流社区

标题: 为什么貌似调用了方法,不起作用! [打印本页]

作者: 王雪冬    时间: 2014-4-16 17:05
标题: 为什么貌似调用了方法,不起作用!
本帖最后由  王雪冬 于 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   。而没有重新赋值呀?




作者: 罗冠坤    时间: 2014-4-16 17:09
这个。。。排版。。。
作者: 罗冠坤    时间: 2014-4-16 17:21
嗯因为这句:newC = c2;

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

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2