数组元素访问一般形式:
数组名[下标]
数组元素通常也称为下标变量,必须先定义数组,才能使用下标变量.
存储方式:
1)计算机会给数组分配一块连续的存储空间
2)数组名代表数组的首地址,从首地址位置,依次存入数组的第1个、第2个....、第n个元素
3)每个元素占用相同的字节数(取决于数组类型)4)并且数组中元素之间的地址是连续
1)数组内部的元素地址是连续的
在内存中,内存从大到小进行寻址,为数组分配了存储空间后,数组的
元素自然的从上往下排列 存储,整个数组的地址为首元素的地址。
2)数组名存放的是数组的首地址
数组的首地址:数组的第一个元素首地址(第一个元素的第一个字节地址)
3)数组每个元素的地址
就是每个元素的首地址
因为数组在内存中占用的字节数取决于其存储的数据类型和数据的个数
数组在内存中占用的总字节数:sizeof(数组名);
所以计算数组长度可以使用如下方法
数组的长度 = 数组占用的总字节数 / 数组元素占用的字节数
1)越界赋值,越界读取,都是很危险的
2)一个长度为n的数组,最大下标为n-1, 下标范围:0~n-1
数组元素就是下标变量,它与普通变量并无区别.因此它作为函数实参使用与普通变量是完
全相同的,在发生函数调用时,把作为实参的数组元素的值传送给形参,实现单向的值传递
1)用数组元素作函数参数不要求形参也必须是数组元素,但是用数组名
作函数参数时,则要求形参和相对应的实参都必须是类型相同的数组
2)在C语言中,数组名除作为变量的标识符之外,数组名还代表了该数组
在内存中的起始地址, 因此,当数组名作函数参数时,实参与形参之间
不是"值传递",而是"地址传递",实参数组名将 该数组的起始地址传
递给形参数组,两个数组共享一段内存单元,编译系统不再为形参数组
分配存储单元。
3)在变量作函数参数时,所进行的值传送是单向的。即只能从实参传向
形参,不能从形参传回实 参。形参的初值和实参相同,而形参的值发
生改变后,实参并不变化,两者的终值是不同的。
1)形参数组和实参数组的类型必须一致,否则将引起错误。
2)形参数组和实参数组的长度可以不相同,因为在调用时,只传送首地址
而不检查形参数组的长度。当形参数组的长度与实参数组不一致时,
虽不至于出现语法错误(编译能通过),但程序执行结果将与实际不符,
这是应予以注意的。
3)在函数形参表中,允许不给出形参数组的长度,或用一个变量来表示数
组元素的个数。 如void nzp( int a[], int n )
4)多维数组也可以作为函数的参数。在函数定义时对形参数组可以指定
每一维的长度,也可省去第一维的长度。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |