数组在C语言中是一个很简单的概念,而数组又是C语言学习以编程中比较重要的一部分。所以虽然说数组比较简单理解也要认真的掌握,毕竟这就是C语言的基础,基础不牢就没办法继续学习。下面会对一维数组和二维数组,还有数组的定义以及概念做个简单的解释和图例。
数组的概念
用来存储一组数据的构造数据类型 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素。
数组的定义
格式: 类型 数组名[元素个数];
一维数组
数据类型 数组名[元素个数] = { };
例子:存放四个元素
int a[4];//在内存中开辟4x4=16个字节的存储空间
也可以直接再定义的时候进行初始化
int a[4]={1,2,3,4};
也可以通过for循环进行输入
在这里可能初学者不懂的是不是4个元素吗,怎么for循环在3就结束了,因为数组的第一个是a[0]。
数组的初始化
1.inta[4]={0,1,2,3};//一般写法
2. inta[4]={0,1};//只对前两个元素赋值,后面的两个系统会赋空值
3. int a[4]={[2]=10,[3]=11};//这样可以对只能的位置赋值
4.int a[]={11,12,13}.//这样是可以的,这样的数组并不规定有多少元素,你添加多少都可以
5.int a[];//错误,编译器无法知道应该分配多少的存储空间
6.int a[4];a={17,18,19,20};//错误,只能在定义数组时这样进行初始化
7.Int [‘A’]={1,2,3};//正确,相当于是ages[65],因为'A'在ascii码中相当于65,这样子系统就分配了65*4的内存空间。
8. Int count=4int a[count];//如果不进行初始化,则这种写法正确,编译器不会报错为其分配16个字节的存储空间,ages[0]=1;ages[1]=2;可以像这样对数组的元素进行赋值,但是2,3等元素的值时不确定的。
9. 而int count=4;int a[count]={1,2,3,4};//这种写法是错误的,在定义数组时对数组进行初始化,元素的个数必须为常量或者不写,不能是一个变量
计算数组元素
当没有表明数组元素个数时,如何对其进行遍历(要求使用数组元素个数)?
可以使用sizeof运算符来计算数组元素的个数
int a=sizeof(a)/sizeof(int); //数组的总长度除以单个的长度等于元素个数
数组内存存储
例子:
int a[]={1,3};
Char ca[5]={‘a’,‘A’,‘B’,‘C’,‘D’};
数组名即代表数组的地址。在内存中,内存会从大到小进行寻址,并且在分配了内存空间后,数组的元素自然往下的排列存储,数组第一个元素的地址为整个数组的地址。
上面的数组在系统中存储如图:
要注意的是字符在内存中是以对应ASCII值的二进制形式存储的,如何ca[1]的形式。在这个例子中,数组x的地址为它的首元素的地址0x08,数组ca的地址为0x03。
传址调用
array和ages两个数组的地址是一样的,因为其实array[0]等于ages[0],在c2(ages[0])中把ages的数组地址传给了array数组。这种传递方式是传址调用,传递的是整个数组的地址,修改形参数组元素的值,就是修改实参的值。当你把一个数组当做参数来传递时,它会看做是一个指针,在该函数体内使用sizeof运算符来计算数组的长度,得出的数值永远为8,而非数组的实际长度,因为任何类型的指针都占8个字节的存储空间。
二维数组
int a[3][3];//这是一个二维数组的定义方式;一共有3*3=9个空间。
如图
你可以这样理解第一个3代表有3行,第二个3代表有3列。
上面是我对于数组的一些理解,包括了一维数组、二维数组等等。对于刚刚接触的朋友一定要记得表示数组元素是第几位的数字和实际表示的数字是不同的,在定义a[5]的时候我们知道有5个元素,但是表示的时候只会表示到a[4]。因为有a[0]的存在,0,1,2,3,4就已经5个了。希望本文能对你有所帮助。
¥25.00¥49.00
¥98.00
¥100.00
¥150.00