• 【IOS 开发】Object


    .



    一. 一维数组



    1. 一维数组定义



    (1) 数组定义


    数组定义格式 : type arrayName[len];

    -- 默认初始化 : 注意 数组定以后, 如果是 int 数组默认初始化为 0, 如果是浮点型 默认元素为 0.0, 如果是 指针类型数组 默认类型 null;



    (2) 数字地址计算


    数组元素地址性质 : 数组元素是连续存放的;

    -- 数组首地址 : 数组变量是一个指针, 其存放了数组中元素的首地址;

    -- 元素地址计算公式 : 元素地址 = 数组首地址 + 数组元素所占内存大小 * 元素索引值;




    2. 数组初始化


    指定数组元素个数

    -- 全部初始化 : 对数组的所有的元素进行初始化;

    -- 部分初始化 : 对数组中的一部分元素进行初始化;


    不指定数组个数 : 如果不指定数组个数, 定义时必须初始化, 会根据初始化的元素个数自动推断数组长度;


    数组长度计算 : sizeof(arrayName) / sizeof(arrayName[0]);



    3. 代码示例


    代码示例

    -- 代码内容

    /*************************************************************************
        > File Name: 12-oneArray.m
        > Author: octopus
        > Mail: octopus_truth.163.com 
        > Created Time: 日 12/ 7 16:30:31 2014
     ************************************************************************/
    
    #import <Foundation/Foundation.h>
    
    int main(int argc, char * argv[])
    {
    	@autoreleasepool {
    		//定义数组格式 type arrayName[length]
    		int array[5];	
    
    		//定义长度, 完全赋值
    		int array1[5] = {0, 1, 2, 3, 4};
    
    		//定义长度, 不完全赋值
    		int array2[5] = {0, 1, 2};
    
    		//不定义长度, 必须初始化
    		int array3[] = {0, 1, 2};
    
    		//定义 C语言字符串数组
    		char * array4[] = {"csdn", "octopus", "hello"};
    
    		//定义 Object-C 字符串数组
    		NSString *array5[] = {@"csdn", @"octopus", @"hello"};
    
    		//遍历 array2
    		for(int i = 0; i < sizeof(array2) / sizeof(array2[0]); i ++)
    		{
    			NSLog(@"array2[%d] = %d", i, array2[i]);
    		}
    	}
    }
    -- 执行结果

    octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 12-oneArray.m 
    octopus-2:oc octopus$ ./a.out 
    2014-12-07 16:38:58.238 a.out[379:507] array2[0] = 0
    2014-12-07 16:38:58.241 a.out[379:507] array2[1] = 1
    2014-12-07 16:38:58.242 a.out[379:507] array2[2] = 2
    2014-12-07 16:38:58.242 a.out[379:507] array2[3] = 0
    2014-12-07 16:38:58.243 a.out[379:507] array2[4] = 0




    三. 多维数组



    1. 二维数组定义


    二维数组定义格式 : type arrayName[rowLength][columnLength];

    -- 数组长度 : 左侧的数字 rowLength 是 一维数组的个数, 即有几行;



    2. 多维数组初始化


    几种初始化方式 : 示例 int array[3][5];

    -- 初始化全部二级数组 : 可以为其初始化 3 个一维数组, 一维数组中得元素个数随意;

    -- 初始化部分二级数组 : 可以为其初始化 少于 3 个一维数组, 只初始化一部分;

    -- 省略二维数组长度 : 如果在声明数组时进行初始化, 那么可以省略数组的 第一个 数组长度;

    -- 省略初始化时的二级数组括号 : 一维数组的括号可以省略, 系统会自动默认初始化的部分自动填充;



    3. 示例


    代码示例

    -- Object-C 代码

    /*************************************************************************
        > File Name: 12-multiArray.m
        > Author: octopus
        > Mail: octopus_truth.163.com 
        > Created Time: 四 12/11 00:59:14 2014
     ************************************************************************/
    
    #import <Foundation/Foundation.h>
    
    int main(int argc, char * argv[])
    {
    	@autoreleasepool {
    
    		printf("1. 初始化全部数组的部分内容
    ");
    		int array1[3][5] = {
    		{1, 2},
    		{5, 7, 7},
    		{2, 4}
    		};
    
    		for(int i = 0; i < sizeof(array1)/sizeof(array1[0]); i ++)
    		{
    			for(int j = 0; j < sizeof(array1[0])/sizeof(array1[0][0]); j ++)
    			{
    				printf("%d	", array1[i][j]);
    			}
    			printf("
    ");
    		}
    
    		printf("
    2. 初始化部分数组的部分内容
    ");
    		int array2[3][5] = {
    		{1, 2, 4, 6, 7},
    		{1}
    		};
    
    		for(int i = 0; i < sizeof(array2)/sizeof(array2[0]); i ++)
    		{
    			for(int j = 0; j < sizeof(array2[0])/sizeof(array2[0][0]); j ++)
    			{
    				printf("%d	", array2[i][j]);
    			}
    			printf("
    ");
    		}
    
    		printf("
    3. 省略数组的长度
    ");
    		int array3[][5] = {
    		{1, 2, 4, 6, 7},
    		{1}
    		};
    
    		for(int i = 0; i < sizeof(array3)/sizeof(array3[0]); i ++)
    		{
    			for(int j = 0; j < sizeof(array3[0])/sizeof(array3[0][0]); j ++)
    			{
    				printf("%d	", array3[i][j]);
    			}
    			printf("
    ");
    		}
    
    		printf("
    4. 省略数组的大括号
    ");
    		int array4[][5] = {
    		1, 2, 4, 6, 7,
    		1
    		};
    
    		for(int i = 0; i < sizeof(array4)/sizeof(array4[0]); i ++)
    		{
    			for(int j = 0; j < sizeof(array4[0])/sizeof(array4[0][0]); j ++)
    			{
    				printf("%d	", array4[i][j]);
    			}
    			printf("
    ");
    		}
    	}
    }

    -- 执行结果

    octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 12-multiArray.m 
    octopus-2:oc octopus$ ./a.out 
    1. 初始化全部数组的部分内容
    1	2	0	0	0	
    5	7	7	0	0	
    2	4	0	0	0	
    
    2. 初始化部分数组的部分内容
    1	2	4	6	7	
    1	0	0	0	0	
    0	0	0	0	0	
    
    3. 省略数组的长度
    1	2	4	6	7	
    1	0	0	0	0	
    
    4. 省略数组的大括号
    1	2	4	6	7	
    1	0	0	0	0



    三. 字符串, 字符数组 与 字符串相关函数



    1. NSLog 与 printf 对比 


    NSLog 与 printf 对比

    -- 输出字符串格式不同 : printf 输出 C 语言格式字符串, 如 "string", NSLog 输出 Object-C 字符串, 如 @"string" ;

    -- NSLog 有多余操作 : NSLog 会自动添加 日期 时间 自动换行 等操作;


    示例

    /*************************************************************************
        > File Name: 12-NSLogVSprintf.m
        > Author: octopus
        > Mail: octopus_truth.163.com 
        > Created Time: 四 12/11 01:18:17 2014
     ************************************************************************/
    
    #import <Foundation/Foundation.h>
    
    int main(int argc, char * argv[])
    {
    	@autoreleasepool {
    		NSLog(@"这是 NSLog 输出的字符串");
    		printf("这是 printf 输出的字符串");
    	}
    }

    -- 执行结果

    octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 12-NSLogVSprintf.m 
    octopus-2:oc octopus$ ./a.out 
    2014-12-11 01:19:07.370 a.out[1925:507] 这是 NSLog 输出的字符串
    这是 printf 输出的字符串octopus-2:oc octopus$ 



    2. 字符数组 和 字符串 


    定义字符数组方式 : 下面的两种方法是等价的;

    -- 使用字符串初始化 : char array[] = "fuck", 使用这种方法定以后, 会在后面自动加上 '';

    -- 使用数组方式初始化 : char array[] = {'f', 'u', 'c', 'k', ''};


    关于字符数组的长度 : 一个由 4 个字符组成的数组, 其长度是 5, 后面还需要加上一个 '';


    代码示例

    /*************************************************************************
        > File Name: 12-charArray.m
        > Author: octopus
        > Mail: octopus_truth.163.com 
        > Created Time: 四 12/11 01:27:12 2014
     ************************************************************************/
    
    #import <Foundation/Foundation.h>
    
    int main(int argc, char * argv[])
    {
    	@autoreleasepool {
    		char char_array[] = "fuck";
    		char char_array1[] = {
    		'f', 'u', 'c', 'k', ''
    		};
    
    		printf("char_array 大小 : %lu, char_array1 大小 : %lu
    ", sizeof(char_array), sizeof(char_array1));
    	}
    }

    -- 运行结果

    octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 12-charArray.m 
    octopus-2:oc octopus$ ./a.out 
    char_array 大小 : 5, char_array1 大小 : 5



    3. 常用的字符串处理函数



    代码示例

    -- 代码

    /*************************************************************************
        > File Name: 12-strMethod.m
        > Author: octopus
        > Mail: octopus_truth.163.com 
        > Created Time: 四 12/11 01:34:08 2014
     ************************************************************************/
    
     #include <string.h>
     #import <Foundation/Foundation.h>
    
    int main(int argc, char * argv[])
    {
    	@autoreleasepool {
    		char c = '1';
    		char c1 = 'A';
    		char c2 = 'a';
    		char c3 = '	';
    
    		NSLog(@"字符相关函数");
    
    		printf("c = %c  是否为数字或数字 : %d 
    ", c, isalnum(c));
    		printf("c = %c 是否为字母 : %d
    ", c, isalpha(c));
    		printf("c = %c 是否为控制字符 : %d
    ",c, iscntrl(c));
    		printf("c = %c 是否为控制数字 : %d
    ", c, isdigit(c));
    		printf("c = %c 是否为可打印字符 : %d
    ", c, isgraph(c));
    		printf("c1 = %c 是否为小写字母 : %d
    ", c1, islower(c1));
    		printf("c1 = %c 是否为大写字母 : %d
    ", c1, isupper(c1));
    		printf("c1 = %c 是否为标点符号 : %d
    ", c1, ispunct(c1));
    		printf("c3 = %c 是否为空白字符 : %d
    ", c3, isspace(c3));
    		printf("c1 = %c 是否是十六进制字符 : %d
    ", c1, isxdigit(c1));
    
    
    		NSLog(@"字符串相关函数");
    
    		char array[20] = "fuck";
    		char array1[] = "bitch";
    
    		//注意 字符串 array 要有足够的空间 存放 后面的 array1
    		printf("%s 拼接字符串 
    ", strcat(array, array1));
    
    		printf("array 出现 c 的位置 %s 
    ", strchr(array, 'c'));
    
    		printf("比较 array 与 array1 大小 : array 是否大于 array1 : %d
    ", strcmp(array, array1));
    
    	}
    }


    -- 执行结果

    octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 12-strMethod.m 
    octopus-2:oc octopus$ ./a.out 
    2014-12-11 02:11:08.608 a.out[2164:507] 字符相关函数
    c = 1  是否为数字或数字 : 1 
    c = 1 是否为字母 : 0
    c = 1 是否为控制字符 : 0
    c = 1 是否为控制数字 : 1
    c = 1 是否为可打印字符 : 1
    c1 = A 是否为小写字母 : 0
    c1 = A 是否为大写字母 : 1
    c1 = A 是否为标点符号 : 0
    c3 = 	 是否为空白字符 : 1
    c1 = A 是否是十六进制字符 : 1
    2014-12-11 02:11:08.610 a.out[2164:507] 字符串相关函数
    fuckbitch 拼接字符串 
    array 出现 c 的位置 ckbitch 
    比较 array 与 array1 大小 : array 是否大于 array1 : 4



  • 相关阅读:
    mysql函数
    mysql创建函数槽点
    python类内置方法的再学习
    一个python生成器的使用
    爬虫----配合多线程的思路
    爬虫相关基础技术铺垫---多线程Thread和队列Queue应用
    beautifulsoup4 用法一二
    python和CSV
    :( Call to a member function Table() on a non-object 错误位置
    实习生的苦恼
  • 原文地址:https://www.cnblogs.com/hanshuliang/p/4215381.html
Copyright © 2020-2023  润新知