黑马程序员技术交流社区

标题: oc中函数和类的使用 [打印本页]

作者: 杨勇    时间: 2014-5-1 01:49
标题: oc中函数和类的使用
本帖最后由 杨勇 于 2014-5-7 10:09 编辑

//声明一个car类
@interface Car :NSObject
{@public
   int wheels;// 轮子个数
   int speed;// 速度
}
- (void)print;
@end

//实现
@implementation Car
- (void) print
{
   NSLog(@"速度为%d,轮子个数为%d",speed,wheels);
}
@end

//函数test
void test(Car *car)
{
    Car *c2=[Car new];
   c2->wheels=4;
   c2->speed=200;
   car=c2;
   car->speed=300;
}

//主函数
int main()
{
  Car *c=[Car new];
  c->wheels=2;
  c->speed=100;
// 调用test
  test(c);
  [c    print];//打印什么值,我希望的是能够分析一下为什么的,而不是结果。
  [c2  print];//可以调用成功么?为什么?打印结果为多少?
  [car  print];//这句呢?
}


谢谢!

作者: m573555543    时间: 2014-5-1 06:14
[c    print];//打印什么值,我希望的是能够分析一下为什么的,而不是结果。
    /*
     速度为100,轮子个数为2
     
     这句的意思是给指针c才所指向对象发送一条print消息 。  
     会找到Car.m 中,去执行。
     
     car.m中的  NSLog(@"速度为%d,轮子个数为%d",speed,wheels);
     这句话是谁在调用speed, wheels 就输出谁的值。
     
     所以结果是:速度为100,轮子个数为2
     */
    Car *c2=[Car new];
    c2->wheels=2;
    c2->speed=100;

   
[c2  print];//可以调用成功么?为什么?打印结果为多少?

    /*不成功,你的在心建立一个
     Car *c2=[Car new];
     c2->wheels=2;
     c2->speed=100;
     */
   
[car  print];
   /*
    这句话的意思是:给指针car所指向的对象发送一条print消息
    你没有car这个指针。
    */





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