C语⾔的数组定义⽅式
C语⾔的数组定义⽅式
数组是存储数据的结构。由于单个变量所能存储的数据很有限,所以有了数组存储结构。不仅如此,数组和指针是相辅相成的,学习数组可以为学习指针打下基础。
注意: 同⼀数组中存储的数必须满⾜以下两个条件:
这些数的类型必须相同。
这些数在内存中必须是连续存储的。
换句话说,数组是在内存中连续存储的具有相同类型的⼀组数据的集合。
c语⾔数组定义⽅式
1、⼀维数组
通常⼀维数组的定义⽅法为:
类型说明符 数组名[常量表达式];
例如:int a[5];
它表⽰定义了⼀个整型数组,数组名为 a,定义的数组称为数组 a。数组名 a 除了表⽰该数组之外,还表⽰该数组的⾸地址;此时数组 a 中有 5 个元素,每个元素都是 int 型变量,⽽且它们在内存中的地址是连续分配的。也就是说,int 型变量占 4 字节的内存空间,那么 5 个int型变量就占 20 字节的内存空间,⽽且它们的地址是连续分配的。
在定义数组时,需要指定数组中元素的个数。⽅括号中的常量表达式就是⽤来指定元素的个数,数组中元素的个数⼜称数组的长度。
注:数组中的下标是从 0 开始的(⽽不是 1)。
为什么下标是从 0 开始⽽不是从 1 开始呢?如果从 1 开始,那么数组的第 5 个元素就是 a[5],⽽定义数组时是 int a[5],两个都是 a[5]就容易产⽣混淆。⽽下标从 0 开始就不存在这个问题了!所以定义⼀个数组 a[n],那么这个数组中元素最⼤的下标是 n–1;⽽元素 a[i]表⽰数组 a 中第 i+1 个元素。
2、⼀维数组初始化
1)完全初始化
给数组⾥的元素全部赋值。
例如:int a[5] = {1, 2, 3, 4, 5};
2)不完全初始化
给数组⾥的部分元素赋值。
int a[5] = {1, 2};
意义为讲a[0],a[1]分别赋值为1,2。⽽后⾯没有被初始化的元素会⾃动被初始化为0。需要注意的是,“不完全初始化”和“完全不初始化”不⼀样。如果“完全不初始化”,即只定义“int a[5];”⽽不初始化,那么各个元素的值就不是0了,所有元素都是垃圾值。
你也不能写成“int a[5]={};”。如果⼤括号中什么都不写,那就是极其严重的语法错误。⼤括号中最少要写⼀个数。⽐如“int a[5]= {0};”,这时就是给数组“清零”,此时数组中每个元素都是零。此外,如果定义的数组的长度⽐花括号中所提供的初值的个数少,也是语法错误,如“a[2]={1,2,3,4,5};”。
3)如果定义时就已经给全部数组元素赋了初值,那么你可以不⽤定义数组长度,因为元素的个数已经确定了。这样既⽅便也不会报错。
int a[] = {1, 2, 3, 4, 5};
3、⼀维数组元素的引⽤
C 语⾔规定,只能逐个引⽤数组元素,⽽不能⼀次引⽤整个数组。前⾯讲过,数组元素的表⽰形式为:数组名[下标]
下标可以是整型常量或整型表达式,⽐如:
a[0] = a[5] + a[7] - a[2 * 3]
定义数组时的常量表达式表⽰的是数组的长度,⽽引⽤数组元素时的下标表⽰的是元素的编号。⽐如:
#include<stdio.h>
int main(void)
{
int a[3]={1,2,3};//定义长度为3的数组a
int t;
t = a[2];//引⽤数组a中下标为2的元素a[2]=3
怎么给数组赋值
printf("t = %d\n", t);
return0;
}
输出结果是:
t = 3
“int a[5];”是定义了有 5 个元素的数组,这 5 个元素分别为 a[0]、a[1]、a[2]、a[3]、a[4]。⽽ t=a[3] 中的 a[3] 不是数组,只是其中的元素 a[3]。
此外,当给元素单独赋值时不能加⼤括号,因为元素就是变量,即 a[5] 只是⼀个变量名。前⾯是怎么给变量赋值的现在就怎么给数组元素赋值,⽐如“a[5]=1;”。但是对于上⾯这个程序,这么写还是错误的。因为数组元素的下标是从 0 开始的,数组 a 的元素只有
a[0]~a[4],并没有 a[5] 这个元素。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。