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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*

枪类:
名称:Gun
属性:型号(_size),子弹个数(_bulletCount)
行为:射击

士兵类
名称:Soldier
属性:姓名(_name)    life    level(等级)
行为:开枪


*/

#import <Foundation/Foundation.h>
#pragma mark - 枪类
@interface Fun:NSObject
{
    @public
    //型号(_size)
    NSString *_cha;
    //子弹个数(_bulletCount)
    int _ziDan;
}
-(void)kaiQiang;

@end

@implementation Fun

-(void)kaiQiang{
    if(_ziDan>0){
        _ziDan --;
        NSLog(@"哒!剩余子弹数:%d",_ziDan);
    }else{
        NSLog(@"您没有子弹了");
    }
}

@end

#pragma mark - 士兵类

@interface shiBing:NSObject
{
    @public
    //姓名(_name)
    NSString *_name;
    // life
    int life;
    // level(等级)
    int level;
}

-(void)Bydd:(Fun *)fin;

@end


@implementation shiBing

-(void)Bydd:(Fun *)fin{
    [fin kaiQiang];
}

@end

int main(int argc,const char * argv[])
{
    @autoreleasepool
    {
        int i;
        shiBing *xsd = [shiBing new];
        xsd -> _name = @"超级战士";
        xsd -> level = 4;
        
        Fun *ak47 = [Fun new];
        ak47 -> _cha = @"Ak47";
        ak47 -> _ziDan = i;
        
        
        NSLog(@"现在4级,请输入您需要的子弹数");
        scanf("%d",&i);
        for(int a = 1 ; a<=i ; a++){
            [xsd Bydd:ak47];
        }
      
    }
    return 0;
}
在这段代码中,main函数里的i变量应该被赋值为 用户输入的函数, 但是实际运行时 输出的结果却是 全部为0且循环输入的次数, 不解!

4 个回复

倒序浏览
顶!! 求大神解答啦!~ {:2_30:}
回复 使用道具 举报
按照我的理解。你当初赋值你只是把 i的值赋值给 子弹了
而后又 3赋值给i这个地址了。而子弹的 指针并没有改变。
NSLog(@"现在4级,请输入您需要的子弹数");
        scanf("%d",&i);
这两句放在赋值的上边就好了
回复 使用道具 举报
谢谢!说的对!
回复 使用道具 举报
对对象中ziDan变量赋值为0,然后改变i的值,此时ziDan变量还是0,应该是先调用scanf函数,为i赋值,然后将i值赋给ziDan变量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马