设为首页 加入收藏

TOP

Object-C 数组使用详解(一)
2015-02-02 14:36:50 来源: 作者: 【 】 浏览:19
Tags:Object-C 使用 详解

一. 一维数组


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


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[] = {"linuxidc", "octopus", "hello"};


? //定义 Object-C 字符串数组
? NSString *array5[] = {@"linuxidc", @"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


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 会自动添加 日期 时间 自动换行 等操作;


示例 :

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java线程范围内的共享数据 下一篇Python中的True, False条件判断

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: