黑马程序员技术交流社区

标题: OC中改变指针指向对象的赋值问题疑惑 [打印本页]

作者: 董月峰    时间: 2014-3-22 12:36
标题: OC中改变指针指向对象的赋值问题疑惑
本帖最后由 董月峰 于 2014-3-27 10:59 编辑

/*

类名:person
属性:(实例变量\成员变量):体重,年龄
行为(方法):走路

*/



#import <Foundation/Foundation.h>

@interface Person : NSObject

{
    @public
    int age;
    double weight;
}
- (void)walk;
@end

@implementation Person
- (void)walk
{
    NSLog(@"走四方哦路迢迢水长长~");
    NSLog(@"此人%d岁,重%d千克",age,weight);
}
@end


int main(int argc, const char * argv[])
{
    Person *p1 = [Person new];
    p1->age = 17;
    p1->weight = 56.0;
    //[p1 walk];
    Person *p2 = [Person new];
    p2->age = 29;
    p2->weight = 68.0;
   
    //指针p1现在指向的是 p2的地址 了
    p1 = p2;
//只修改age
    p1->age = 22;
//调用方法
    [p1 walk];
//    NSLog(@"此人%d岁,重%d千克",p1->age,p1->weight);

    @autoreleasepool {
        
        // insert code here...
        NSLog(@"Hello, World!");
        
    }
    return 0;
}
/*
2014-03-22 12:31:23.586 oc-4 成员与成员变量[7809:303] 走四方哦路迢迢水长长~
2014-03-22 12:31:23.588 oc-4 成员与成员变量[7809:303] 此人22岁,重22千克
2014-03-22 12:31:23.588 oc-4 成员与成员变量[7809:303] Hello, World!
Program ended with exit code: 0

疑问:输出的为啥不是22岁,重68千克
*/
作者: Hi围城    时间: 2014-3-22 13:06
  1. /*

  2. 类名:person
  3. 属性:(实例变量\成员变量):体重,年龄
  4. 行为(方法):走路

  5. */



  6. #import <Foundation/Foundation.h>

  7. @interface Person : NSObject

  8. {
  9.     @public
  10.     int age;
  11.     double weight;
  12. }
  13. - (void)walk;
  14. @end

  15. @implementation Person
  16. - (void)walk
  17. {
  18.     NSLog(@"走四方哦路迢迢水长长~");
  19.     //NSLog(@"此人%d岁,重%d千克",age,weight);此处输出格式有误
  20.     NSLog(@"此人%d岁,重%f千克",age,weight);
  21. }
  22. @end


  23. int main(int argc, const char * argv[])
  24. {
  25.     Person *p1 = [Person new];
  26.     p1->age = 17;
  27.     p1->weight = 56.0;
  28.     //[p1 walk];
  29.     Person *p2 = [Person new];
  30.     p2->age = 29;
  31.     p2->weight = 68.0;
  32.    
  33.     //指针p1现在指向的是 p2的地址 了
  34.     p1 = p2;
  35.     //只修改age
  36.     p1->age = 22;
  37.     //调用方法
  38.     [p1 walk];
  39.     //    NSLog(@"此人%d岁,重%d千克",p1->age,p1->weight);
  40.    
  41.     @autoreleasepool {
  42.         
  43.         // insert code here...
  44.         NSLog(@"Hello, World!");
  45.         
  46.     }
  47.     return 0;
  48. }
  49. /*
  50. 2014-03-22 12:31:23.586 oc-4 成员与成员变量[7809:303] 走四方哦路迢迢水长长~
  51. 2014-03-22 12:31:23.588 oc-4 成员与成员变量[7809:303] 此人22岁,重22千克
  52. 2014-03-22 12:31:23.588 oc-4 成员与成员变量[7809:303] Hello, World!
  53. Program ended with exit code: 0

  54. 疑问:输出的为啥不是22岁,重68千克
  55. */
  56. //把27行的%d改成%f,你试试?
复制代码

作者: 董月峰    时间: 2014-3-22 13:08
Hi围城 发表于 2014-3-22 13:06

谢了,了解错误出在哪儿了
作者: 迎着太阳    时间: 2014-12-21 22:20
董月峰 发表于 2014-3-22 13:08
谢了,了解错误出在哪儿了

改成%f后,输出答案就是22岁,68千克?




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