您的位置:首页 > 编程语言 > C语言/C++

四、数组

2015-07-19 12:17 232 查看
说数组这个概率前先介绍下地址,这样又助于对数组的理解。

一、地址:

在计算机中,内存是以字节为单位的存储空间。每个内存都有自己一个唯一的内存地址,在程序中任何数据都有自己的内存地址,一个变量,一个函数都有自己的内存地址。

每当定义一个变量时,系统就会自动为这个变量分配内存地址。

int a,b;
printf(“%d\n%d",&a,&b);

上面这段代码中就定义了两个变量 a ,b 并打印出他们的内存地址(&可以打印出内存地址),打印结果(10进制)如下:



可以看出一般两个连续定义的变量在内存地址中是连续的。

二、一维数组:

一维数组的定义:

数组类型 数组名 [元素个数]
int a[5];

[ ] 里面的元素个数必须是固定的值,可以是常量(5,6)或者常量表达式(2*3,4/2)。不能使用变量和变量表达式来表示元素的个数,大多数情况下的元素个数是不能省略的(数组作为函数形参,和初始化的情况下除外)。

一维数组的初始化:

一维数组的初始化一般形式是这样的:类型  数组名 [元素个数] = {元素1,元素2.....};

int a [2] = {1,2};

上面的形式其实相当于

int a [2];
a [0] = 1;
a [2] = 2;

注意:元素的下标是从0开始的,在C语言的编译器中,是不会对元素的下标越界进行检查的,所以访问数组时要小心谨慎。

int a [4] = {3,4};

上面这样的数组初始化只赋值了前面两个元素,也就是说 a[2] a[3]没有对其赋值。

int a[ ] = {4,6};

数组的初始化赋值是可以省略元素个数的,这样的数组初始化表示的元素个数是两个,分别是 a[0] a[1] 

注意:当定义一个数组时没有初始化赋值,后面对数组进行赋值时只能一个一个的赋值,如:

int a [5];
a [0] = 6;
a [1] = 2;
a [2] = 5;
a [3] = 6;
a [4] = 8;

一维数组与函数参数:

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

// b是test函数的形参(形式参数)

#include <stdio.h>
void test(int b)
{
b = 9;
}

int main(int argc, const char * argv[]) {

int a[3];
a[0] = 10;

printf("调用函数前的值:%d\n",a[0]);

test(a[0]);

printf("调用函数后的值:%d",a[0]);

return 0;
}

输出结果:



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

#include <stdio.h>

// b是test函数的形参(形式参数)
void test(int b[])
{
b[0] = 9;
}

int main(int argc, const char * argv[]) {

int a[3];
a[0] = 10;

printf("调用函数前的值:%d\n",a[0]);
// a是test函数的实参(实际参数)
test(a);

printf("调用函数后的值:%d",a[0]);

return 0;
}

输出结果:



三、二维数组:

二维数组的定义:

数组类型 数组名 [行数] [列数]

int [3] [2]; // 3行2列 一共有6个元素

二维数组的存储方式:

二维数组在地址中的存储方式是先按顺序存储第一行再存储第二行,如下:

a [0] [0]  a [0] [1]
a [1] [0]  a [1] [1]
a [2] [0]  a [2] [1]

二维数组的初始化:

按行进行初始化:

int a [3] [2] = {{2,1},{3,4},{2,4}};

int a [3] [2] = {{2},{},{2,4}};

这里的初始化可以只进行部分元素的初始化,不需要初始化的元素可以省略,没有初始化的元素默认值为0。

按存储顺序进行初始化:

int a [3] [2] = {2,4,5,1,4};

注意看上面的初始化元素是少一个的,是可以只初始化部分元素的,这里的第 a [2] [1]个元素没有进行初始化,没有进行初始化的元素默认值为0。

初始化的时候可以省略行数,但是不能省略列数,如下:

int a[] [2] = {{2,2}{3,4}{4,3}};

int a[] [2] = {1,42,4,2,3,4};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 ios 数组