【黑马程序员】C语言学习笔记之数组(九)

--------------------------------------------IOS期待与您交流!--------------------------------------------

一、一维数组

1>定义

->格式:类型  数组名[元素个数]
->[]里面的个数必须是一个固定值,可以是常量(比如6、8)、常量表达式(比如3+4、5*7)。绝对不能使用变量或者变量表达式来表示元素个数,大多数情况下不要省略元素个数

2>初始化

->一般形式是:类型  数组名[元素个数] = {元素1, 元素2, ...};
->int a[2] = {8, 10};
其实相当于:
int a[2];
a[0] = 8;
a[1] = 10;
->注意:C语言中编译器是不会对数组下标越界进行检查的,所以自己访问数组元素时要小心
->元素值列表可以是数组所有元素的初值,也可以是前面部分元素的初值
int a[4] = {2, 5};
->当数组为整型时,初始化未确定初值的元素,默认为0,所以上面的a[2]、a[3]都为0
->当对全部数组元素都赋初值时,可以省略元素个数
int a[] = {2, 5, 7};
说明数组a的元素个数是3

3>一维数组作为函数参数

->数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,这样形参数组修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。

二、二维数组

1>二维数组的定义

->定义形式:类型  数组名[行数][列数]
->int a[2][3]; // 共2行3列,6个元素

2>二维数组的初始化

->按行进行初始化
int a[2][3] = { {2, 2, 3}, {3, 4, 5} };
->按存储顺序进行初始化(先存放第1行,再存放第2行)
int a[2][3] = {2, 2, 3, 3, 4, 5};
->对部分元素进行初始化
int a[2][3] = { {2}, {3, 4} };
int b[3][3] = { { }, { , , 2}, {1, 2, 3}};
->如果只初始化了部分元素,可以省略行数,但是不可以省略列数
int a[][3] = {1, 2, 3, 4, 5, 6};
int a[][3] = {{1, 2, 3}, {3, 5}, {}};
有些人可能想不明白,为什么可以省略行数,但不可以省略列数。也有人可能会问,可不可以只指定行数,但是省略列数?其实这个问题很简单,如果我们这样写:
int a[2][] = {1, 2, 3, 4, 5, 6}; // 错误写法
大家都知道,二维数组会先存放第1行的元素,由于不确定列数,也就是不确定第1行要存放多少个元素,所以这里会产生很多种情况,可能1、2是属于第1行的,也可能1、2、3、4是第一行的,甚至1、2、3、4、5、6全部都是属于第1行的


--------------------------------------------IOS期待与您交流!--------------------------------------------

详细请查看:http://edu.csdn.net

你可能感兴趣的:(数组,C语言)