oc基础学习笔记---数组及相关

oc基础学习笔记—数组及相关

1. 数组的定义
类型 数组名 [长度]

int myintArray[5]

2. 初始化数组

int myintArray[]={11,22,2,33,4,55,66,77,88,99,87};
//或
myintArray[1]=0

3. 数组长度的获取

int myintArray[5]
sizeof(myintArray)

sizeof只能反映数组占据的字节数,如果需要知道数组的长度要需要用这个字节数除以数据类型所占据的字节数,如int为4个字节,所以真正的长度应该是

sizeofsizeof(myintArray)/4
int myintArray[]={11,22,2,33,4,55,66,77,88,99,87};
        for(int i=0,length=sizeof(myintArray)/sizeof(myintArray[0]); i<length;i++){
            NSLog(@"%i",myintArray[i]);
        }
}

4. 二维数组的使用(嵌套遍历及二维数组长度的获取)

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int my2d[2][3]={{1,3,5},{2,4,6}};
        for (int i=0,length=sizeof(my2d)/sizeof(my2d[0]); i<length; i++) {
            for (int j=0,length2=sizeof(my2d[i])/sizeof(my2d[i][0]); j<length2; j++) {
                printf("my2d[%i][%i]=%i\t",i,j,my2d[i][j]);
            }
        }
    }
    return 0;
}

5. 创建返回类型为NSString类型的函数及函数的调用

NSString *sayhi(NSString *words){
        return words;
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        NSLog(@"answer is %@",sayhi(@"hello word"));
    }
    return 0;
}

例2

NSString *sayhi(NSString *words,NSString *emotion){
    return [NSString stringWithFormat:@"say the words %@ with %@",words,emotion];
}
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"answer is %@",sayhi(@"hello word",@"haha"));
    }
    
    return 0;
    
}

6. 调用其他文件(oc)的函数
1、创建oc文件NSString+fun.h及NSString+fun.m文件(.h文件用于声明,.m文件用于实现)

#import "NSString+fun.h"
@interface NSString (fun)//可以看到,这里是接口,所以需要再m文件中实现这个接口
int domax(int a,int b);
@end

2.在NSString+fun.m文件中实现.h文件的接口

#import "NSString+fun.h"
@implementation NSString (fun)
int domax(int a,int b){
    return a>b? a:b;
}
@end

3、在main函数中引用这个函数

#import "NSString+fun.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        NSLog(@"answer is %i",domax(4, 200));
    }
    return 0;
}

7. 形参的值传递

void change(int a,int b){
    NSLog(@"inner befor is %i,%i",a,b);
    int temp=a;
    a=b;
    b=temp;
    NSLog(@"inner after is %i,%i",a,b);
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int a=5,b=9;
        NSLog(@"out befor is %i,%i",a,b);
        change(a,b);
        NSLog(@"out after is %i,%i",a,b);
    }
    return 0;
    
}

打印结果如下

out befor is 5,9
inner befor is 5,9
nner after is 9,5
out after is 5,9

8. 指针作为参数

@interface DataWrap:NSObject//声明一个借口
@property int a,b;
@end

@implementation DataWrap//实现这个接口
@synthesize a,b;//合成a、b两个属性
@end

void swap(DataWrap *dw){
    NSLog(@"inner change before a=%i,b=%i",dw.a,dw.b);
    int temp=dw.a;
    dw.a=dw.b;
    dw.b=temp;
    NSLog(@"inner change after a=%i,b=%i",dw.a,dw.b);
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        DataWrap *mydw=[[DataWrap alloc]init];
        mydw.a=6;
        mydw.b=9;
        NSLog(@"outer change before a=%i,b=%i",mydw.a,mydw.b);
        swap(mydw);
        NSLog(@"outer change after a=%i,b=%i",mydw.a,mydw.b);
       
    }
    return 0;
}

9. 数组做参数

int minvalue(int arrayint[]){
    int minval=arrayint[0];
    for (int i=0,length=sizeof(arrayint)/sizeof(arrayint[0]); i<length;i++) {
        if(arrayint[i]<minval){
            minval=arrayint[i];
        }
    }
    return minval;
    
    
}
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int myarray[]={32,564,64,36,78};
        int mymin=minvalue(myarray);
        NSLog(@"the minvalue is %i",mymin);
        
       
    }
    return 0;
}

10. 使用块变量及块

块需要赋值给块变量才能够使用
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        void (^printsm)(void)=^(void){
            NSLog(@"here is somthing to print");
        };
        
        int (^result)(int,int)=^int (int a,int b){
            return a-b;
        };
        printsm();
        NSLog(@"a jian b =%i",result(33,55));

    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值