数组

来源:互联网 发布:淘宝店铺怎么开通花呗支付 编辑:程序博客网 时间:2024/06/03 08:38

数组是用户定义的一组有序的数据项。可以通过索引或下标的数字引用其中的各个元素,数组元素的索引以0开头。例如:现在定义一个名为grades的变量,他表示 一组数,而不是一个数,数组的第一个元素为grades[0],表示数组中索引为0的元素。数组中的任何一个变量都是常规变量,因此,任何元素都可以用在常规变量上,都可以进行如下操作:

g = grades[0];

grades[0] =54;

这些操作都是合法的。

通过改变数组下标的变量值,就可以轻松的浏览数组中的元素。例如;

for (i = 0; i < 100; ++i)

sum += grades[i];

依次浏览数组grades的前一百个元素。

和其他变量一样,必须在使用之前先声明数组。数组的声明及声明数组所包含元素的的数值类型以及将存储在数组中的最大元数目,两者缺一不可。例如:

Fraction * fracts [100];

1.数组元素的初始化

从第一个元素开始,简单地列出数组元素的初值,就可以实现,数值中的元素由逗号分隔,将整个数组置于一对大括号中,此时数组的最大元数目就可以省略。例如:

int grades[5] = {0,1,2,3,4}

不必完全初始化整个数组。如果指定了较少的初始化值,那么只会初始化等量的元素,并且数组中其余元素被设为0.

通过将元素编号放在一对大括号中,就可以以任何顺序初始化指定的数组元素。例如:

 int x = 1234;

int a[] = { [9] = x+1, [2] = x+2, [0] = 1, [1] = x};

定义了一个名为a的10个元素数组,数组的长度由最大索引得出,并将数组的最后一个初始化为1235,前三个分别初始化为1,1234,1236.

2.字符数组

char word[] = { 'h' , 'e' , 'l' , 'l' ,'o' ,'!' };

这样会自动根据初始化元素的数目确定数组的大小。只要在定义数组时初始化了数组中的每一个元素,这种方式就没有问题。但是如果不是这种情况,就必须显示地给出数组地大小。如果在字符数组结尾添加一个终止空字符('\0'),就产生了一个通常称为字符串地变量。上句代码可以改成如下:

char word[] = { 'H', 'e', 'e', 'l', 'o', '!','\0' };

就可以使用NSLog语句调用NSLog  (@"%s", word);%s格式字符表明NSLog会持续显示字符,直到遇到终止空字符,也就是在word数组最后添加地字符,但是,如果word地定义中没有'\0',调用NSLog函数时,就可能显示错误。

3.多维数组

这里主要介绍一下二维数组,二维数组主要的应用是矩阵。

声明二维数组的方式和一维数组的方式相同。例如:

int M[4][5];

第一个索引指的是行数,第二个索引指的是列数。这里声明M为4行5列的二维数组。

初始化二维数组类似雨一维数组的方式,列出初始化元素时,它们的值使按行排列的。利用花括号对分隔初始化的各行。例如:

int M[4][5] = {

{10, 5, -3, 17, 82},

{9, 0, 0, 8, -7},

{32, 20, 1, 0, 14},

{0, 0, 8, 7, 6}

};

特别注意除了最后一行,每行结束的花括号之后必须加上逗号。实际上,内层括号可以省略。如果没有内层括号,将按行进行初始化。所以,上一行语句可以如下编写:

int M[4][5] = { 10, 5, -3, 17, 82, 9, 0, 0, 8, -7, 32, 20, 1, 0, 14, 0, 0, 8, 7, 6};

和一维数组一样,也不必初始化整个二维数组,例如:

int M[4][5] = {

{10, 5, -3, 17},

{9, 0, 0, 8},

{32, 20, 1, 0},

{0, 0, 8, 7}

};

只初始化了矩阵每行的前三个元素,其余值都设为0.在这种情况下,需要内层花括号对,以强制正确地初始化。如果没有这些花括号,将初始化前两行和第三行地前两个元素。


0 0