.

一. 一维数组

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"};//遍历 array2for(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. 初始化全部数组的部分内容\n");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\t", array1[i][j]);}printf("\n");}printf("\n2. 初始化部分数组的部分内容\n");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\t", array2[i][j]);}printf("\n");}printf("\n3. 省略数组的长度\n");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\t", array3[i][j]);}printf("\n");}printf("\n4. 省略数组的大括号\n");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\t", array4[i][j]);}printf("\n");}}
}

-- 执行结果 :

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", 使用这种方法定以后, 会在后面自动加上 '\0';

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

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

代码示例 :

/*************************************************************************> 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', '\0'};printf("char_array 大小 : %lu, char_array1 大小 : %lu\n", 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 = '\t';NSLog(@"字符相关函数");printf("c = %c  是否为数字或数字 : %d \n", c, isalnum(c));printf("c = %c 是否为字母 : %d\n", c, isalpha(c));printf("c = %c 是否为控制字符 : %d\n",c, iscntrl(c));printf("c = %c 是否为控制数字 : %d\n", c, isdigit(c));printf("c = %c 是否为可打印字符 : %d\n", c, isgraph(c));printf("c1 = %c 是否为小写字母 : %d\n", c1, islower(c1));printf("c1 = %c 是否为大写字母 : %d\n", c1, isupper(c1));printf("c1 = %c 是否为标点符号 : %d\n", c1, ispunct(c1));printf("c3 = %c 是否为空白字符 : %d\n", c3, isspace(c3));printf("c1 = %c 是否是十六进制字符 : %d\n", c1, isxdigit(c1));NSLog(@"字符串相关函数");char array[20] = "fuck";char array1[] = "bitch";//注意 字符串 array 要有足够的空间 存放 后面的 array1printf("%s 拼接字符串 \n", strcat(array, array1));printf("array 出现 c 的位置 %s \n", strchr(array, 'c'));printf("比较 array 与 array1 大小 : array 是否大于 array1 : %d\n", 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

【IOS 开发】Object - C 数组使用详解相关推荐

  1. iOS 开发:『Runtime』详解(二)Method Swizzling

    本文用来介绍 iOS 开发中『Runtime』中的黑魔法Method Swizzling. 通过本文,您将了解到: Method Swizzling(动态方法交换)简介 Method Swizzlin ...

  2. (0054)iOS开发之制作静态库详解

    最近在做Apple的IOS开发,有开发静态库的需求,下面就简单写一个静态库和一个调用静态库的例子. 静态库的编写: 1. 静态库工程的建立: Xcode New一个新的project,选择IOS下面的 ...

  3. iOS开发 蓝牙技术4.0详解

    前言 前端时间,同学在做项目过程中遇到关于蓝牙方面的问题,今天我就给大家进行详细的进行讲解下蓝牙在iOS开发中的具体实现.在介绍蓝牙前,大家要搞清楚什么是蓝牙? 什么是蓝牙? 随着蓝牙低功耗技术BLE ...

  4. iOS开发-Apple开发者账号详解

    证书类型 账号类型 价格 可以发布AppStore? 支持安装设备数量 申请条件 证书类型 个人账号 $99 √ 500 无限制 Ad Hoc, App Store 公司账号 $99 √ 500 DU ...

  5. iOS开发系列课程(08) --- 事件处理详解和手势操作

    iOS中的事件分发 事件的分类 Touch Events(多点触摸事件) touchesBegan:withEvent:方法:一个或多个手指置于视图或窗口上 touchesMoved:withEven ...

  6. IOS开发网络篇之──ASIHTTPRequest详解

    目录 目录 发起一个同步请求 创建一个异步请求 队列请求 请求队列上下文 ASINetworkQueues, 它的delegate提供更为丰富的功能 取消异步请求 安全的内存回收建议 向服务器端上传数 ...

  7. iOS 开发 二维码扫描详解

    1.扫描二维码的控制器.m代码 #import "JDGScanQRcodeController.h" #import <AVFoundation/AVFoundation. ...

  8. iOS中的HotFix方案总结详解

    iOS中的HotFix方案总结详解 相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dy ...

  9. 李洪强iOS经典面试题156 - Runtime详解(面试必备)

    李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...

最新文章

  1. DDD理论学习系列(2)-- 领域
  2. Spark入门:也可以用Java创建轻量级的RESTful应用程序
  3. Camera2点击对焦实现
  4. 项目人力资源管理重点梳理
  5. 网络设备巨头优倍快的客户数据遭泄露
  6. systemctl不可用时,使用service命令关闭防火墙
  7. SpringBoot之idea打包以及启动jar包
  8. 依赖倒转原则_Java设计模式的七大原则
  9. 小程序数据框有重影_关于拖动滚动条编辑框数据重影的问题
  10. Cocos2d-xV3.17.2 win32平台模板源码详注
  11. 使用LP Wizard制作allegro PCB封装的步骤
  12. JAVA 二叉树面试题
  13. 虚拟现实眼镜(增强现实眼镜)成像原理浅析
  14. 爬虫基础篇之多途径抓取失信人名单
  15. 猜单词游戏。计算机随机产生一个单词,打乱字母顺序,供玩家去猜 a.准备一组单词,随机抽取一个b.将抽取的单词作为答案,打乱字母顺序,显示给玩家,供其猜测c.猜测错误继续猜测或以空字符串.
  16. oracle spatial特点,Oraclespatial结构取讲解
  17. 计算机我要学到什么水平?
  18. windows模拟微信小程序_【原创】PC微信小程序包解密工具C#版无需root或模拟器
  19. IPA签名是怎么回事儿?
  20. php 卡路里计算,减肥速度计算器 - 减肥计算器 - 肌肉网

热门文章

  1. 04:网络层协议介绍
  2. [译]课程 9: 作业存储
  3. node中npm安装模块的网络问题
  4. mysql 表查询注意
  5. nginx 卸载后重新安装/etc/nginx配置文件没了,cannot open /etc/nginx/nginx.conf (No such file or directory)...
  6. 知识体系地图模型:你是如何有效地学习?
  7. 二、Windows基础数据类型
  8. Arnold+Shave 渲染毛发
  9. 报错解决——ctypes.ArgumentError: argument 1:……….. : wrong type
  10. CodeForces 390E Inna and Large Sweet Matrix(树状数组改段求段)