黑马程序员--易错点整理

1.关于char类型变量的大小

char类型如果直接用sizeof来计算大小,会输出4,比如a,在内存中以65存在,如果想要其输出1,要像瞎编这样来写:

int main()
{
    char c = 'a';
    
    int i = sizeof(c);
    
    NSLog(@"%d",i);
    
    return 0;
}


2.关于if函数

#import <Foundation/Foundation.h>

@interface Student : NSObject
{
    int _age;
}

- (void)setAge:(int)Myage;
- (int)age;

@end

@implementation Student

- (void)setAge:(int)Myage
{
   /* if(Myage<=0)
    {
        _age = 1;
    }
    else
    {
    _age = Myage;

    }*/
    
    if (Myage<=0)
    {
        _age = 1;
    }
    
    _age = Myage; // 这种写法是错误的,因为,if执行完之后,它总会执行这一句,这样_age的值总是Myage,正确写法在上边
}

- (int)age
{
    return _age;
}

@end

int main()
{
    Student *p = [Student new];
    
    [p setAge:-10];
    
    NSLog(@"p=%d",[p age]);
    
    return 0;
}


3.如果出现Thread1:signal SIGABRT

说明,越界了,你调用了一个不存在的内容,比如,只有10个数,你偏偏说要用第11个

 
NString *ns = @"123"
NSMutableString *str1 =[NSMutableString string];
    for (NSInteger  i = ns.length;i>=0;i--)
    {
        NSString *str2 = [ns substringWithRange:NSMakeRange(i,1)]; // i=3,字符串只有0,1,2
        [str1 appendString:str2];
    }

4.局部变量要初始化,否则它就是任意值


5.如果在字符串中删除某个字符,那么后边的字符会自动补上

//给一个英文句子,罗列出句子中出现的字母和其出现的次数,不区分大小写。
#import <Foundation/Foundation.h>

int main()
{
    /*
    NSLog(@"please input a sentence");
    
    char *str2;
    gets(str2);
    */
    NSMutableString *str = [NSMutableString stringWithFormat:@"dsafsdfdmmsm"];


    
    for (int i=0;i<str.length;i++)
    {
        int count = 1;
        for (int j=i+1;j<str.length;j++)
        {
            if ([str characterAtIndex:i] == [str characterAtIndex:j])
            {
                count++;
                [str deleteCharactersInRange:NSMakeRange(j,1)];
                <span style="color:#cc0000;">j--;// 一直错,因为少这一行,因为你删除了一个字母,下一行的时候就会直接判断下一个是否相等。</span>
            }
        }
        NSLog(@"%dge%c",count,[str characterAtIndex:i]);
        count = 1;
    }
    
    return 0;
}

6.调用scanf或者gets的时候,如果定义为char *name后边很容易出EX-BAD错误,这个时候就要替换为char name[100],这样就不会报错了

int main()
{
    NSLog(@"please input a sentence");
   <span style="color:#ff0000;"> char sen[100];
    gets(sen);</span>
    NSMutableString *str = [NSMutableString stringWithUTF8String:sen];
    int count = 1;
    for (int i=0;i<str.length;i++)
    {
        for (int j=i+1;j<str.length;j++)
        {
            if ([str characterAtIndex:i] == [str characterAtIndex:j])
            {
                count++;
                NSRange range1 = NSMakeRange(j,1);
                [str deleteCharactersInRange:range1];
                j--;
            }
        }
        NSLog(@"%dge%c",count,[str characterAtIndex:i]);
        count = 1;
    }
    
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值