C语言03
为了理解数组,先来认识下内存中的“地址”
一. 地址
1.计算机中的内存是以字节为单位的存储空间。内存的每一个字节都有一个唯一的编号,这个编号就称为地址。凡存放在内存中的程序和数据都有一个地址,也就是说,一个函数也有自己的内存地址。
2.当定义一个变量时,系统就分配一个带有唯一地址的存储单元来存储这个变量。
3.在调试过程中,我们采取打印的方式查看变量的地址:
int c = 10;
// 以16进制形式输出地址
printf("16进制:%x\n", &c);
// 以10进制形式输出地址
printf("10进制:%d", &c);
二.一维数组
* 定义的形式为:类型 数组名[元素个数]
int a[5];
[]里面是固定值,常量或者常量表达式,不能是变量,多数情况下不要省略元素个数(当数组作为函数的形参和数组初始化时除外)
定义数组时,系统将按照数组类型和个数分配一段连续的存储空间来存储数组元素,如int a[3]占据了连续的6字节存储空间(在16位编译器环境下,一个int类型占用2个字节)。要注意的是,数组名代表着整个数组的地址,也就是数组的起始地址。
* 元素值列表可以是数组所有元素的初值,也可以是前面部分元素的初值
int a[4] = {2, 5};
当数组为整型时,初始化未确定初值的元素,默认为0,所以上面的a[2]、a[3]都为0
* 当对全部数组元素都赋初值时,可以省略元素个数
int a[] = {2, 5, 7};
说明数组a的元素个数是3
* 数组初始化时的赋值方式只能用于数组的定义,定义之后只能一个元素一个元素地赋值
二维数组初始化,可以省略行数,但是不可以省略列数。
三. 字符串