4. Objective-C 编程之 数组

1、定义数组

语法格式:

type arrName[length]

length 既可以是一个固定的整数值,也可以是整数变量或整数表达式。

如果定义数组时没有对元素初始化,那么默认会赋元素默认值。整型的是0,浮点型的是0.0,指针类型的是nil。

数组本身保存了第一个元素的地址(首地址)。

算各元素的地址:

元素地址 = 首地址 + 数组变量所占的内存大小 * 索引

2、数组的初始化

语法格式:

type arrayName[length] = {value1, value2, value3, value4...};

指定数组的元素时,也就是为数组指定了初始化值,可以为全部元素指定,也可以为前面一部分元素指定。没有指定到的就只能赋初始化值。

如果初始化的时候指定了所有数组元素的初始值,可以省略掉指定 length 了,因为会自动推算出数组有多少个元素从而确定长度。

3、使用数组

还记得方括号吗?此处就要用上了——>[ ]。

数组初始化完成之后,不能对数组本身进行赋值。

数组索引是从0开始的。arr[0],取的便是第一个数组元素。

OC 本身没有提供方法或者相关属性来访问数组的长度,但可以用 sizeof() 函数来计算数组的长度。

用法如下:

sizeof(arr) / sizeof(arr[0])

不过,sizeof(arr) 返回的是整个数组占用的字节数,sizeof(arr[0])发挥的是第一个与元素占用的字节数,除后就可以算出数组的长度。

4、多维数组

二维数组

语法格式:

type arrayName[length][length]

理解:

其实看起来二维数组还是一维数组,也就是说一维数组的元素也是一维数组。

举例:

arr[2][3]

上面说明了数组 arr 中有两个元素,

arr[0],它又有三个元素,arr[0][0]、arr[0][1]、arr[0][2]

arr[1],它又有三个元素,arr[1][0]、arr[1][1]、arr[1][2]

多维数组的初始化:

多维数组说到底还是一维数组,好比说 n 维数组相当于数组元素是 n-1 维数组的一维数组。

第四章,结束!

本篇内容属原创,转载请注明出处,禁止用于商业用途。谢谢!

http://blog.csdn.net/zsfz_053/article/details/42527169

时间: 2024-10-22 15:29:31

4. Objective-C 编程之 数组的相关文章

编程算法 - 数组中的逆序对 代码(C)

数组中的逆序对 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 在数组中的两个数字如果前面一个数字大于后面的数字, 则这两个数字组成一个逆序对. 输入一个数组, 求出这个数组中的逆序对的总数. 使用归并排序的方法, 辅助空间一个排序的数组, 依次比较前面较大的数字, 算出整体的逆序对数, 不用逐个比较. 时间复杂度: O(nlogn) 代码: /* * main.cpp * * Created on: 2014.6.12 * Author:

编程算法 - 数组中只出现一次的数字 代码(C)

数组中只出现一次的数字 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 一个整型数组里除了两个数字以外, 其他的数字都出现了两次. 请写程序找出这两个只出现一次的数字. 如果从头到尾依次异或数组中的每一个数字, 那么最终的结果刚好是那个只出现一次的数字. 根据结果数组二进制某一位为1, 以此分组, 为1的一组, 为0的一组, 再重新进行异或. 最后得出两个结果. 时间复杂度O(n). 代码: /* * main.cpp * * Create

网易云课堂_C++程序设计入门(下)_第8单元:年年岁岁花相似– 运算符重载_第8单元 - 作业2:OJ编程 - 重载数组下标运算符

第8单元 - 作业2:OJ编程 - 重载数组下标运算符 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 练习数组下标运算符重载 依照学术诚信条款,我保证此作业是本人独立完成的. 1 练习数组下标运算符重载(6分) 本题目具体内容请参见 [第8单元 - 单元作业2说明] 时间限制:500ms内存限制:32000kb #include <iostream> #in

60.编程统计数组a中正数、0、负数的个数

#include<iostream> using namespace std; int main() { int x=0,y=0,z=0; int a[10]; cout<<"please input 10 numbers:"<<endl; for(int i=0;i<10;i++) { cin>>a[i]; } for(int j=0;j<10;j++) { if(a[j]==0) { x++; } } for(int m=

网易云课堂_C++程序设计入门(下)_第10单元:月映千江未减明 – 模板_第10单元 - 单元作业:OJ编程 - 创建数组类模板

第10单元 - 单元作业:OJ编程 - 创建数组类模板 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 本单元作业练习创建模板类.单元作业会涉及冒泡排序.线性查找等算法.如果对排序.查找不熟悉,可以自行baidu或者google 依照学术诚信条款,我保证此作业是本人独立完成的. 1 编写一个数组类模板 Array,能够存储不同类型的数组元素.对数组元素进行查找.

《C专家编程》数组和指针并不同--多维数组

<C专家编程>数组和指针并不同 标签(空格分隔): 程序设计论著笔记 1. 背景理解 1.1 区分定义与声明 p83 声明相当于普通声明:它所说明的并非自身,而是描述其他地方创建的对象,声明可以多次出现: 定义相当于特殊声明:它可以为对象分配内存,只能出现在一个地方. 1.2 数组和指针的访问方式 左值和右值 ???????? X = Y ; 符号X的含义是X所代表的地址,这被称为左值,左值在编译时可知,左值表示存储结果的地方. 符号Y的含义是Y所代表的地址的内容,这被称为右值,右值直到运行时

编程算法 - 数组构造二叉树并打印

数组构造二叉树并打印 本文地址: http://blog.csdn.net/caroline_wendy 数组: 构造二叉树, 需要使用两个队列(queue), 保存子节点和父节点, 并进行交换; 打印二叉树, 需要使用两个队列(queue), 依次打印父节点和子节点, 并进行交换; 二叉树的数据结构: struct BinaryTreeNode { int m_nValue; BinaryTreeNode* m_pParent; BinaryTreeNode* m_pLeft; BinaryT

Scala编程入门---数组操作之数组转换

使用yield和函数式编程转换数组 //对Array进行转换,获取的还是Aarry val a = Array(1,2,3,4,5) val a2 = for(ele <- a) yield ele * ele //对ArrayBuffer进行转换,获取的还是ArrayBuffer val b = ArrayBuffer[Int]() b+=(1,2,3,4,5) val b2=for(ele <- b) yield ele*ele //结合if守卫, 仅转换需要元素 val a3= for(

(转)轻松掌握shell编程中数组的常见用法及示例

缘起:在老男孩进行linux培训shell编程教学中,发现不少水平不错的网友及同学对数组仍然很迷糊,下面就给大家分享下数组的用法小例子,希望能给大家一点帮助.其实SHELL的数组很简单,好用.我们学习都应该遵循简单.易用的原则. shell编程中数组的简单用法及示例 新版本的Bash支持一维数组. 数组元素可以使用符号variable[xx]等方式来初始化. 另外, 脚本可以使用declare -a variable语句来指定一个数组等.要引用一个数组元素(也就是取值), 可以使用大括号, 访问

shell编程之数组

bash 编程只支持一维数组,不支持多维,类似c语言,数组下标从0开始,下标可以是整数,也可以是表达式 数组的定义 在shell中用括号来表示数组,中间用空格来隔开 主要有两种种定义形式: arr=(1 2 3 4 5 6) arr=( 1 2 3 4 ) 同时还可以单独定义数组的分量 arr[0]=1 arr[1]=2 arr[2]=3 arr[3]=4 可以不使用连续的下标,而且下标的范围没有限制 读取数组 读取数据的一般格式是${arr[index]} echo ${arr[1]}