数组定义及注意事项

数组定义及注意事项,第1张

怎样定义和引用一维数组

一、一维数组是数组中最简单的,它的元素只需要用数组名加一个下标,就能唯一地确定。

怎样定义一维数组

//定义数组
int array[100]; //表示着没有初始化的数组,仅仅请了100个整形数的内存空间 最好要初始化: int array[100]={0};
int array[3] = { 1,2,3 }; //有初始化的数组,完整初始化,该数组申请了三个整形数内存空间,并赋值三个数1,2,3
int array[100] = { 1,2,3 }; // 有初始化的数组,不完整初始化,该数组申请了100个整型数内存空间,但只赋值三个数1 2 3 ,放在数组的前 三个位置 ,剩余其它系统会默认赋为0
int n;
scanf(“%d”, &n); // 实际应当中无报错,可使用,但是在一些所谓的教材中,认定为非法!
int array4[n]; // 当我们学会指针的时候,就可以完全抛弃这种定义方式,用指针的思维来做
## 定义一维数组的一般形式为
类型符 数组名[常量表达式]
注意:
(1)数组我听命名规则和变量相同,遵循标识符命名规则。


(2)在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度,例如 a[10],如上定义所示。


(3)常量表达式中可以包括常量和符号常量,如"int a[3+5]",是合法的。

不能包含变量,如“int a[n]”;是不合法的,如以上定义所示。

怎样引用一维数组元素
 引用数组元素的表示形式为
 数组名[下标]

例如:a[0]就是数组中序号为0的元素,它和一个简单变量的地位和作用相似。


注意:定义数组时用到的“数组名[常量表达式]”和引用数组元素时用的"数组名[下标]"形式相同,但含义不同

怎样定义和引用二维数组

定义:二维数组常称为矩阵。

把二维数组写成行(row)和列(column)的排列形式,可以有助于形象化地理解二维数组的逻辑结构。

怎样定义二维数组

例如:int num [3][6];
以上定义了一个int 型的二维数组,第1维有3个元素,第2维有6个元素。

每一维的长度分别用一对方括号包起来。

二维数组定义的一般形式为

类型说明符 数组名[常量表达式][常量表达式];
例如:
float a[3][4] ,b[5][10];
定义a为3×4(3行4列)的数组,b为5×10(5行10列)的数组。

注意不能写成
float[3,4],b[5,10];
理解为:C语言对二维数组采用这样的定义方式,使得二维数组可被看作是一种特殊的一维数组:它的元素又是一个一维数组。

例如,可以把a看作一个一维数组,它有3个元素
a[0],a[1],a[2]
每个元素又是一个包含4个元素的一维数组,例如如下:
a[0] ----------------- a[0][0] a[0][1] a[0][2] a[0][3]
a[1] ----------------- a[1][0] a[1][1] a[1][2] a[1][3]
a[2] ------------------ a[2][0] a[2][1] a[2][2] a[2][3]

注意:用矩阵形式(如3行4列形式)表示二维数组,是逻辑上的概念,能形象地表示出行列关系。

而在内存中,各元素是连续存放的,不是二维的,是线性的。

怎样引用二维数组的元素

  二维数组元素的表示形式为
    数名名[下标][下标]
例如:a[2][3]表示a数组中序号为2的行中序号为3列的元素。

下标应是整形表达式,如a[2-1][22-1]。

不要写成a[2,3]、a[2-1,22-1]形式。

数组元素可以出现在表达式中,也可以被赋值,例如:

  b[1][2]= a[2][3]/2
注意:在引用数组元素时,下标值应在已定定义的数组大小的范围内。

在这个问题上常用出现错误。

例如:

int a[3][4];
int a[3][4]=3 ; // 不存在这样赋值。


// 按以上的定义,还需要注意数组a可用的行下标 的范围为02,**列下标**的范围为03。

用a[3][4]表示元素显然超过了数组的范围。


// 区分:在定义数组时用的a[3][4] 和引用元素时的a[3][4]的区别。

前者用a[3][4]来定义数组的维数和各维的大小,后者a[3][4] 中的3和4是数组元素的下标值,a[3][4]代表行序号为3、列序号为4的元素(行序号和列序号均从0起算)。


// 区别:单行或单列的数组,称为一维数组,多行多列的数组是二维数组。

二维数组的初始化 可以用“初始化列表”对二维数组初始化

例如:
(1)int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; // 这种赋值方法比较直观,把第1个花括号内的数据给第1行的元素,第2个花括号内的数据赋给第2行的元素……即按行赋初值
(2)int a[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12}; // 可以将所有数据写在一个花括号内,按数组元素在内中的排列顺序对各元素赋初值
(3)int a[3][4]={{1},{3},{4]}; //它的作用是只对各行第1列(即序号为0的列)的元素赋值初值,其余元素值自动为0。

赋初值后数组各元素为 。


1 0 0 0
3 0 0 0
4 0 0 0

字符数组定义

字符数组的初始化
char c[12]={‘h’,‘e’,‘l’,‘l’,‘o’,‘’,‘w’,‘o’,‘r’,‘l’,‘d’}; // 如果提供的初值个数与预定的数组长度相同,在定义的时可以省略数组长度,系统会自动根据初值个数确定数组长度

字符串和字符串结束标志

例如:就是用一个一维的字符数组来存放字符串"I a am student"的,的字符串中的字符是逐个存放到数组元素的。

在该例中,字符串的实际长度与数组长度相等。

注意:例如:定义一个字符数组长度为100,而实际有效字符只有40个。

为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”以字符“\0”作为结束标志。

则认为数组中有一个字符串,其有效字符为9个。

也就是说,在遇到字符"\0"时,表示字符串结束,把它前面的字符组成一个字符串。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/662273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-18
下一篇 2022-04-18

发表评论

登录后才能评论

评论列表(0条)

保存