本文目录
数组的概念是什么数组根据索引分为哪两种如何区分
数组是一个由若干同类型变量组成的集合,引用这些变量时可用同一名字。数组均由连续的存储单元组成,最低地址对应于数组的第一个元素,最高地址对应于最后一个元素,数组可以是一维的,也可以是多维的。
5.1 一维数组
一维数组的一般说明形式如下:
type-specifier var_name [size];
在C语言中,数组必须显示地说明,以便编译程序为它们分配内存空间。在上式中,类型说明符指明数组的类型,也就是数组中每一个元素个数,一维数组的总字节数可按下式计算:
sizeof( 类型) *数组长度= 总字节数
[例5-1] 将数字0到9装入一个整型数组。
main( )
{
int x[10]; /* 定义包含1 0个整型数的数组,引用为x [ 0 ] ,x [ 1 ] . . . x [ 9 ] * /
int t ;
for (t=0; t<10;++t) x[t]=t;
}
C语言并不检验数组边界,因此,数组的两端都有可能越界而使其它变量的数组甚至程序代码被破坏。在需要的时候,数组的边界检验便是程序员的职责。例如,当使用gets( )接收字符输入时,必须确认字符数组的长度足以存放最长的字符串。
一维数组在本质上是由同类数据构成的表,例如,对下列数组a :
char a[7]
图5 - 1说明了数组a在内存中的情形,假定起始地址为1000。
5.1.1 向函数传递一维数组
将一维数组传递给函数时,把数组名作为参数直接调用函数即可,无需任何下标。这样,数组的第一个元素的地址将传递给该函数。C语言并不是将整个数组作为实参来传递,而是用指针来代替它。例如,下面的程序将数组i的第一个元素的地址传递给函数func1( )。
main( )
{
int i[10];
func1(i); /*函数调用,实参是数组名* /
. . .
}
函数若要接收一维数组的传递,则可以用下面的二种方法之一来说明形式参数; 1) 有界数组;2) 无界数组。例如,函数func1 ( )要接收数组i可如下说明:
func1(str)
char str[10]; /* 有界数组,数组的下标只能小于或等于传递数组的大小。* /
{
.
. .
}
也可说明为:
func1(str)
char str[ ]; / * 无界数组* /
{
.
. .
}
这二种说明方法的效果是等价的,它们都通知编译程序建立一个字符指针。第一种说明使用的是标准的数组说明;后一种说明使用了改进型的数组说明,它只是说明函数将要接收一个具有一定长度的整型数组。细想就会发现,就函数而言,数组究竟有多长并无关紧要,因为C语言并不进行数组的边界检验。事实上,就编译程序而言,下面的说明也是可行的。
func1 (str);
int str[32];
{
. . .
}
因为编译程序只是产生代码使函数func1( )接收一个指针,并非真正产生一个包含3 2个元素的数组。
5.1.2 字符串使用的一维数组
显然,一维数组的最普通的用法是作为字符串。在C语言中,字符串被定义为一个以空字符终结的字符数组。空字符以‘ \ 0’来标识,它通常是不显示的。因此,在说明字符数组时,必须比它要存放的最长字符串多一个字符。例如,假如要定义一个存放长度为1 0的字符串的数组s,可以写成:
char s[11];
这样就给字符串末尾的空字符保留了空间。
尽管C语言并不把字符串定义为一种数据类型,但却允许使用字符串常量。字符串常量是由双引号括起来的字符表。例如,下面两个短语均为字符串常量:
"hello there"
"this is a test"
不必向字符串的末尾加空字符, C编译程序会自动完成这一工作。
C语言支持多串操作函数,最常用的有:
名字功能
strcpy(s1 s2) 将s2拷贝到s1
strcat(s1 s2) 将s 2连接到s 1的末尾
strlen(s1) 返回s1的长度
strcmp(s1,s2) 若s1与s2相等,返回值为0
若s1 若s1 > s2,返回值大于0 例5 - 2说明了这些函数的用法。 [例5 - 2 ] #include main( ) { char s1[80],s2[80]; /*定义字符数组* / gets (s1); /*输入字符串* / gets (s2); printf ("lengthsf: %d %d\n" ,strlen(s1),strlen(s2)); if (!strcmp(s1,s2)) printf ("the strings are equal \n"); strcat(s1,s2); printf ("%s\n",s1); } 切记,当两个串相等时,函数strcmp( )将返回Fa l s e,因而当测试串的等价性时,要像前例中的那样,必须用逻辑运算符!将测试条件取反。 当程序运行并以“hello”和“hello”这两个串作为输入时,其输出为: hello hello lengths:5 5 The strings are equal hellohello 5.2 二维数组 5.2.1 二维数组的一般形式 C语言允许使用多维数组,最简单的多维数组是二维数组。实际上,二维数组是以一维数组为元素构成的数组,要将d说明成大小为(10,20)的二维整型数组,可以写成: int d[10][20] 请留心上面的说明语句, C不像其它大多数计算机语言那样使用逗号区分下标,而是用方括号将各维下标括起,并且,数组的二维下标均从0计算。 与此相似,要存取数组d中下标为( 3,5)的元素可以写成: d[ 3 ][ 5 ] 在例5 - 3中,整数1到12被装入一个二维数组。 [例5 - 3 ] main ( ) { int t,i,num[3][4] for (t=0; t<3; ++t) for (i=0;i<4;++i) num[t][i] = (t * 4) + i + 1; } 在此例中, num[0][0]的值为1,num[0][2]的值为3, . . . . . .,num[2][3]的值为1 2。可以将该数组想象为如下表格: 0 1 2 3 0 1 2 3 4 1 5 6 7 8 2 9 10 11 12 二维数组以行—列矩阵的形式存储。第一个下标代表行,第二个下标代表列,这意味着按照在内存中的实际存储顺序访问数组元素时,右边的下标比左边的下标的变化快一些。图5 - 2是一个二维数组在内存中的情形,实际上,第一下标可以认为是行的指针。 记住,一旦数组被证明,所有的数组元素都将分配相应的存储空间。对于二维数组可用下列公式计算所需的内存字节数: 行数×列数×类型字节数=总字节数 因而,假定为双字节整型,大小为( 10,5)的整型数组将需要:10×5×2=100 字节,当二维数组用作函数的参数时,实际上传递的是第一个元素(如[ 0 ] [ 0 ])的指针。不过该函数至少得定义第二维的长度,这是因为C编译程序若要使得对数组的检索正确无误,就需要知道每一行的长度。例如,将要接收大小为( 10,10)的二维数组的函数,可以说明如下: func1(x) int x[ ][10] { . . . } 第一维的长度也可指明,但没有必要。 C编译程序对函数中的如下语句: X[2][4] 处理时,需要知道二维的长度。若行长度没定义,那么它就不可能知道第三行从哪儿开[例5-4] 用一个二维数组存放某一教师任教的各班学生的分数。假定教师有三个班,每班最多有三十名学生。注意各函数存取数组的方法。 #define classes 3 #define grades 30 #include main( ) { void enter_grades(); void disp_grades( ); int get_grade( ); int a[classes] [grades];/* 定义二维数组,每行存放一个班学生成绩* / char ch; for( ; ;) do { /*菜单显示* / printf("(E)nter grades\n"); printf("(R)eport grades\n"); printf("(Q)uit\n"); ch=toupper(getchar()); /* 将键盘输入字符转换为大写* / } while(ch!='E' && ch!='R' && ch!='Q'); switch(ch){ case 'E': enter_grades( ); break; case 'R': disp_grades(grade); break; case 'Q': exit(0); } } } void enter_grades(a) int a[][grades]; { int t, i; for (t=0;t { printf("class #%d:\n",t+1); for(i=0; i 所谓数组,是有序的元素序列。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。 比如油烟机的风扇转速会和工作的模式之间有一定的关系,那么我们就可以把它的工作模式和一维数组的下标对应起来,我们将具体的转速放在数组中,这样的话就非常方便我们在日后查询。 再比如说家中的冷暖灯光控制这方面,色温灯里会有两个灯珠,分别对应的是冷光和暖光,选择不同的模式灯光的颜色就不同,我们就可以将这两种灯光的亮度pwm值事先放在二维数组中,以便调用调光。 在程序中合理地使用数组,会使程序的结构比较整齐,而且可以把较为复杂的运算,转化成简单的数组来表示。 扩展资料: 一、使用规则: 1、可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。 2、只能给元素逐个赋值,不能给数组整体赋值。 (请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。) 3、若不给可初始化的数组赋初值,则全部元素均为0值。 4、假如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。 动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。 二、表示方法: 数组元素是组成数组的基本单元。 数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:数组名[下标] 其中的下标只能为整型常量或整型表达式。 如为小数时,C编译将自动取整。例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量, 而不能一次引用整个数组。 参考资料: 二维字符数组的定义格式为:char 数组名[第一维大小][第二维大小]; 例如:char c[3][10]; //定义了一个3行10列的二维字符数组c 由于该二维数组的每一行 c[0]、c[1]、c[2] 均是含有 10 个元素的一维字符数组,即二维数组的每一行均可表示一个字符串。 通常情况下,二维数组的每一行分别使用一个字符串进行初始化。 例如: 例如:char c[3][8]={{"apple"},{"orange"},{"banana"}}; 扩展资料分析 字符串 "Apple" 的长度为 5,加上结束符 "\0" 共 6 个字符,前 5 个字符分别从 c[0] 行的首元素 c[0][0] 开始存放,到 c[0][4],第 6 个字符 '\0' 只能保存到 c[1] 行的首元素 c[1][0]。 字符串 "Orange" 的长度为 6,该字符串的前 5 个字符分别从 c[1] 行的首元素 c[1][0] 开始存放,到 c[1][4],第 6 个字符及结束符 '\0' 顺序存到 c[2][0] 和 c[2][1]。 字符串 "Pear" 的长度为 4,该字符串的 5 个字符(包含 '\0')分别从 c[2] 行的首元素 c[2][0] 开始存放,到 c[2][4]。 组字组词两个字的词语 组哨 尺组 组阁 青组 分组 印组 缨组 珪组 组就 曳组 弁组 组纚 绮组 锦组 组织 缀组 组分 纡组 组帐 班组 针组 冠组 组冕 文组 丽组 织组 系组 组曲 玑组 圭组 綦组 机组 黑组 裂组 珩组 怀组 遗组 鬓组 组稿 楚组 组成 蝉组 彯组 骈组 小组 组绂 组缋 组甲 履组 组佩 簪组 组装 组绶 组歌 组帷 金组 绕组 邦组 改组 龟组 编组 纂组 组圭 组珪 组态 采组 章组 皇组 朱组 组诗 鞶组 组丽 三组 词组 组绣 赤组 党组 临组 组练 缛组 组带 组字组词带有解释的二字词语 【组合机床】:根据被加工工件的工艺要求,以工序集中为原则,将机床标准部件拼凑组合... 【组合】:(1)组织成为整体:这本集子是由诗、散文和短篇小说三部分~而成的。(2... 【组圭】:1.见"组珪"。 【组合体】:1.句法单位;具有句法关系的词或短语。 【组件】:1.作为机器﹑仪表等的组成部件或零件。 【组绶】:1.古人佩玉,用以系玉的丝带。2.借指官爵。 【组阁】:组织内阁。参看〖内阁〗。 【组冕】:1.组绶和冠冕。借指官位。 【组缋】:1.丝织品上的彩色刺绣或绘饰。 【组曲】:由若干器乐曲组成的一组乐曲。 【组纚】:1.见"组丽"。 【组成】:(部分、个体)组合成为(整体):~统一战线。 【组哨】:1.由战斗小组担任的宿营警戒。 【组练】:1.《左传.襄公三年》:"﹝楚子重﹞使邓廖帅组甲三百,被练三千以侵吴。"孔... 【组分】:指混合物中的各个成分,如空气中的氧、氮、氢等都是空气的组分。 【组珪】:1.亦作"组圭"。2.组带及玉制符信。古代贵官的服饰器物。 【组画】:表现同一主题的、形式统一的一组画。组画比连环画一般幅数少,画面较大,每... 【组合夹具】:机床夹具的一种,也叫积木式夹具。它是一套按夹具元件的作用预先制造好... 【组甲】:1.甲衣。用丝绳带联缀皮革或金属的甲片。《管子.五行》:"天子出令,命左右... 【组丽】:1.亦作"组纚"。2.华美。用以形容丝织品或诗文。 【组辔】:1.辔绳。 【组态】:1.化学化合物的结构,尤指关于分子中的原子的空间结构。如:组态平衡。 【组诗】:1.指同一诗题﹑内容互相联系的几首诗。 【组佩】:亦作“组佩”。组带及玉佩。古代官员的习用服饰。 【组绂】:1.印绶。借指官位。 【组帷】:1.彩色丝帐。 【组就】:1.古代冕旒上彩色丝绳串。 【组建】:1.组织建立(机构﹑队伍等)。 【组歌】:表现同一个主题的若干支歌曲组成的一组歌,如《长征组歌》。 【组成部分】:组合在整体中的一部分,成分。 【组胺】:有机化合物,存在于动值物体的组织内,能促进胃液的分泌,引起毛细管扩张,... 组字组词三个字词语 山奥组、 组合梁、 摄制组、 粘粒组、 包乘组、 密聚组、 三元组、 达见组、 组织租、 有柄组、 组合体、 小组长、 组合拳、 方程组、 教研组、 根茎组、 基因组、 斜口组、 组合论、 团小组、 党小组、 狭蕊组、 多花组、 小组唱、 年中组、 软组织、 高粱组、 组委会、 组织液、 糙毛组 类脂组、 节理组、 课题组、 组字组词四个字的词语 组织界限、 牛皮消组、 上禄丰组、 五人小组、 传圭袭组、 网目组织、 析圭分组、 满达组合、 组群效应、 组织咨询、 解组归田、 组织生活、 后缀数组 偏正词组、 组合优化、 文件组织、 内伊组特、 皮下组织、 芦山县组、 组别活动、 电源模组、 隔山消组、 斜纹组织、 乃伊组特、 债务重组 声画组合、 跟组演员、 免疫组化、 凸条组织、 上皮组织、 组织决策、 长轴组织、 拳腿组合、 古巨茴组、 重圭叠组、 长萼齿组、 组织心理、 群众组织、 目无组织、 纱罗组织、 经济组织、 簇生叶组、 羣众组织、 双层组织、 以索续组、 香茶菜组、 鹊肾树组、 纶组节束、 一道组特、 长叶松组、 内部数组、 毛巾组织、 槲寄生组、 纶组节约、 简并组态、 组织中心、 组织类型、 组字组词四字成语带有解释 以索续组:用粗绳去连接丝带。比喻后继者的才学远逊前人。 重圭叠组:指世代连续做官。 析圭分组:谓任官受印。组,组绶。 解组归田:解组:去官。指辞官返乡务农。 传圭袭组:指取得功名。圭,古代帝王、诸侯举行隆重仪式时所用的玉制礼器;组,古代官员系印的丝带,转指官印。 重珪迭组:指世代连续做官。 鸣玉曳组:佩玉饰曳印组。指任高官。 目无组织:不顾组织纪律的规定 大于四个字的组字组词成语 没有 组字的拼音和汉字解释 组 (组) zǔ 结合,构成:组成。组合。组阁。组织。组编。 因工作和学习的需要而结合成的小单位:互助组。创作组。 合成一体的(文艺作品):组诗。组画。组曲。组舞。 古代指丝带:组缨(系冠的丝带)。组绶(玉佩上系玉的丝带)。 量词,用于事物的集体:两组电池。 笔画数:8; 部首:纟; 组字组词组成的好听的男孩女孩名字 没有 以上就是关于数组词语二字,数组的概念是什么数组根据索引分为哪两种如何区分的全部内容,以及数组词语的相关内容,希望能够帮到您。 版权声明:本文来自用户投稿,不代表【子航网】立场,本平台所发表的文章、图片属于原权利人所有,因客观原因,或会存在不当使用的情况,非恶意侵犯原权利人相关权益,敬请相关权利人谅解并与我们联系(邮箱:faedoony@foxmail.com)我们将及时处理,共同维护良好的网络创作环境。c语言中数组a[10][2] 是什么意思
c语言二维数组如何测试字符串长度
仱怎么组词语和拼音