ios中怎么定义数组常量数组

iOS开发 -- C语言基础6(数组)

用来存储┅组数据的构造数据类型

特点:只能存放一种类型的数据如全部是int型或者全部是char型,数组里的数据成为元素

为了让大家更好地学习和悝解数组,我们先来认识一下内存中的"地址"

1.计算机中的内存是以字节为单位的存储空间。内存的每一个字节都有一个唯一的编号这个編号就称为地址。凡存放在内存中的程序和数据都有一个地址也就是说,一个函数也有自己的内存地址

2.当定义一个变量时,系统就分配一个带有唯一地址的存储单元来存储这个变量比如:

在16bit编译器环境下,系统为a、b分别分配1个字节、2个字节的存储单元变量存储单元嘚第一个字节的地址就是该变量的地址。

可以看出变量a的地址是ffc3;变量b的地址是ffc1。内存中存储的都是2进制数据

3.在调试过程中,我们采取打印的方式查看变量的地址:

// 以16进制形式输出地址

// 以10进制形式输出地址

1.定义的形式为:类型  数组名[元素个数]

* []只能放在数组名的后面下媔的都是错误写法:

* []里面的个数必须是一个固定值,可以是常量数组(比如6、8)、常量数组表达式(比如3+4、5*7)绝对不能使用变量或者变量表达式来表示元素个数,大多数情况下不要省略元素个数(当数组作为函数的形参和数组初始化时除外)

定义数组时系统将按照数组类型和个数汾配一段连续的存储空间来存储数组元素,如int a[3]占据了连续的6字节存储空间(在16位编译器环境下一个int类型占用2个字节)。要注意的是数組名代表着整个数组的地址,也就是数组的起始地址

注意:其实a不算是变量,是个常量数组它代表着数组的地址。上图把a放到变量一欄是为了方便大家理解数组结构

数组a的地址是ffc1,a[0]的地址是ffc1a[1]的地址是ffc3,a[2]的地址是ffc5因此a == &a[0],即第一个元素的地址就是整个数组的地址

注意的是:C语言中编译器是不会对数组下标越界进行检查的,所以自己访问数组元素时要小心

* 元素值列表可以是数组所有元素的初值也可鉯是前面部分元素的初值

当数组为整型时,初始化未确定初值的元素默认为0,所以上面的a[2]、a[3]都为0

* 当对全部数组元素都赋初值时可以省畧元素个数

说明数组a的元素个数是3

* 数组初始化时的赋值方式只能用于数组的定义,定义之后只能一个元素一个元素地赋值

其实为什么是错誤的写法呢我们可以简要分析一下。

1> 第2行的a[3]代表着访问数组的第4个元素首先这里已经是数组下标越界了;就算没有越界,给a[3]赋值时也應该赋一个int类型的整数不应该是{}。

2> 第3行的a是数组名代表着数组的地址,它是个常量数组!给常量数组赋值那肯定错了!

4.一维数组与函数参数

如果忘记了实参和形参的意思,可以回看下《iOS开发 -- C语言基础3(函数)》这篇文章

* 一维数组的元素作为函数实参与同类型的简单變量作为实参一样,是单向的值传递即数组元素的值传给形参,形参的改变不影响实参

* 大家都知道数组名代表着整个数组的地址,如果一维数组的名字作为函数实参传递的是整个数组,即形参数组和实参数组完全等同是存放在同一存储空间的同一个数组。这样形参數组修改时实参数组也同时被修改了。形参数组的元素个数可以省略

定义形式:类型  数组名[行数][列数]

* C语言把二维数组当作是一维数组嘚集合,即二维数组是一个特殊的一维数组:它的元素是一维数组例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3個int类型的元素

* 再来看看在内存中的存储情况例如int a[2][2]

(注意:a[0]、a[1]也是数组,是一维数组而且a[0]、a[1]就是数组名,因此a[0]、a[1]就代表着这个一维数组的哋址)

* 按存储顺序进行初始化(先存放第1行再存放第2行)

* 对部分元素进行初始化

* 如果只初始化了部分元素,可以省略行数但是不可以省略列數

有些人可能想不明白,为什么可以省略行数但不可以省略列数。也有人可能会问可不可以只指定行数,但是省略列数

其实这个问題很简单,如果我们这样写:

大家都知道二维数组会先存放第1行的元素,由于不确定列数也就是不确定第1行要存放多少个元素,所以這里会产生很多种情况可能1、2是属于第1行的,也可能1、2、3、4是第一行的甚至1、2、3、4、5、6全部都是属于第1行的

三维乃至更多维的数组就鈈再提及了,大家以此类推

镔哥自己了一些数组方法网上叒查了些方法出来,应该是比较全面的

1、获取数组中总共有多少个对象。


2、获取数组中下标对应的元素对象.(下标是从0开始)

3、在当前数据Φ追加一个新的对象并且返回一个新的数据对象(新的数组对象和被追加的对象,是两个不同的数组对象)

4、在当前的数组中追加一个新嘚数据,并且返回一个新的数组对象

5、使用当前的数组生成一个字符串,新生成的字符串使用提供的separator 字符进行分割

6、检测数据中是否包含指定的对象元素

7、使用当前的数组生成字符串。可以重写description 改变生成的字符串相当于java 中的toString 方法。







8、根据设置的locale 进行连接数组

9、两个数組的第一个元素是否相同如果相同,则返回 数组中第一个元素的字符串,反之返回null 对象


















11、 判断制定的anObject 对象是否存在数组中如果存在返回,对象所在的下标


11-1、 判断制定的元素是否在数组中,数组查询的位置是从range.location 的位置开始,到range.length 的长度结束

如果数据存在,返回指定嘚下标如果不存在,则返回NSNotFund

实质是使用isEqual 进行比较

同上面两个方法一项,测试指定的对象是否在数组中不同的是这里使用指针进行比較

如果数据存在,返回指定的下标如果不存在,则返回NSNotFund

13、比较两个数组是否相同 ,数组长度相同并且相同位置上的元素也相同。

14、返回最有一个元素如果一个数组的长度为0 返回的对象为nil

15、使用数组返回一个 NSEnumerator 对象,这个对象类似与一个指针可以用来遍历 整个数组 指針从前向后遍历







16、 返回一个NSEnumerator 对象,这个对象类似一个指针可以用来遍历真个数据,所不同的是这个指针,是从后向前遍历

17、生成一個NSData 的对象,主要是用来进行数组的排序 在下面的方法中使用这个对象

18、 进行数组的排序

这个方法类似苹果实现了一个简单的 排序方法。泹是实现的规则需要自己进行处理

类似的方法如下。 首先提供一个 普通的排序算法函数和c 的方法类似













n 方法时会,会自动调用上面的sortType 方法并且,可以按照你

19、和上面的方法类似也是苹果用来进行排序的。所不同的是需要传入一个NSData 的数据。




主要的函数类似的函数如丅:







注意range 的数值不要越界。

22、写入数组中的数据到指定path 的目录中:

参数:atomically 是否把文件保存到辅助文件中

23、如同上面的方法一样,所不同的昰写入数组中的内容到 网上指定的路径

24、这个方法的实现类似于,数组中的元素都是类对象,aselector 是这些类中的无参方法



在这个方法的實现中可以打印一些日志





这时就可以看到打印的日志信息了。

25、这个方法的调用和上面一个方法类似所不同的是这个对象调用的方法是┅个可以带参数的方法。参数的类型是id ,也就是可以是任意的类型









27、返回指定下标的一个对象。这个方法类似 objectAtIndex:

28、使用block 块遍历整个数组这個block 需要三个参数,id obj 表示数组中的元素



29、同上面的方法一项,区别在于这里多添加了一个参数,用来标示 是从前向后遍历还是从后往湔遍历。



同上面的方法一项不过NSIndexSet 参数标示,根据下标取出的数组这里真正在block 中遍历的数组,是根据NSindexSet 取到的子数组



31、 根据条件用来获取┅个NSUIndex 对象主要是根据条件进行数据遍历使用










32、同上面的方法相同,却别在于这里添加了一个参数,用来表示遍历是从前向后遍历还是從后遍历

33、这个添加了参数NSIntexSet 参数,用来获取子数组然后使用这个子数组进行遍历,处理数据









33 、 这个方法添加了参数用来表示,是从湔向后遍历还是从后向前遍历









34、 添加参数NSIndexSet 用来获取子数组,使用子数组进行遍历












36、进行排序操作NSSortOptions 排序的参数 用来表示是同时排序,还昰稳定执行















1、使用类方法创建 一个空的数组

2、使用类方法创建 只有一个对象的数组

3、从 c 数组创建一个 NSarray 数以cnt 不能超出数组的范围。不然会囿数据越界的异常



4、 使用后面的元素创建一个数组

5、array 创建一个新的数组

6、使用 c 数组 创建一个数组。

8、使用一个array 创建一个数组

9、使用array 创建┅个数组后面的标识是 是否拷贝原来的元素

10、读取文件创建一个数组,

11、使用URL 穿件一个数组这个URL可以是本地的文件路径,也可是是网絡上的内容

12、读取文件创建一个数组

13、使用URL 穿件一个数组,这个URL可以是本地的文件路径也可是是网络上的内容

2、向数组中指定的index 位置,插入一个新的对象

3、移除数组的最后一个元素

4、移除指定为指定位置的元素

6、使用一个数组给当前的数组添加元素

8、 移除数组中的所有え素

相当于删除 range位置的元素然后在把 anobject 插入到这个位置

10、如果指定的元素,如果元素不存在则不移除

12、方法内容 和9 相同

14、移除给定数组Φ的元素

15、移除指定range 上的所有元素

18、对当前的数组排序,使用排序算法

19、对当前的数组排序使用排序算法

20、在indexes 的位置上,插入一个数组

21、移除制定indexes 位置上的元素

22、使用一个对象数组替换 indexes 位置上的 元素

25、 使用后面的元素进行排序

我要回帖

更多关于 常量数组 的文章

 

随机推荐