/*
数组总结
一、1.数组的定义:三要素;数组类型 数组名 数组长度(常量表达式);
此外还有掌握 数组 数组元素 数组下标 数组维数的概念
2.数组的分类:
1)按照类型分类:数值数组,字符数组,结构数组,指针数组
2)按照维数分类:一维,二维,三维,乃至多维...
3.数组的使用:
1)定义和初始化数组:
1>定义的同时初始化
2>先定义再初始化
1>>部分初始化
2>>完全初始化
2)数组传参(数组与函数):
1>数组名传参:传递的是地址,形参和实参共享一块内存区
就是说,在被调函数中修改数组,则函数外的数组也会被改变.
被调函数内:因为传的是地址,sizeof(数组名(即地址))==8 恒等
被调函数外,数组名就是代表整个数组,sizeof(数组名)==整个数组所占字节数
2>数组元素传参:这个是值传递,函数内外的数组是两个数组,不会相互影响
而且被调函数一结束,该函数内的数组空间就会被释放
一般格式:数组名[下标]
3)特别的关于数组有关地址的内容:
数组名==&数组名==&数组名[0] 这三个的值即地址都是相等的.
4)数组的遍历:如:二维数组,外循环控制行数,内循环控制列数 打印出数组内所有元素.
5)求数组的最大(小)值:遍历与比较、交换变量相结合的用法
6)数组的算法:
1>冒泡排序:大数下沉 小数上浮 (相邻比较大小,并决定是否交换数值)
2>选择排序:每次查找 末排序列中 的最大值,将其至于末排序列的左边位置,做长度-1轮 结束
7)注意:数组分配内存时和基本数据类型的变量有所不同.
数组分配内存虽然开始也是先从高地址查找,但也只是用来确定整个数组(相当与基本数据类型的变量)所占总的空间.
然后,数组在计算机划分好的自己一亩三分地开始给数组元素分配内存,从低地址向高地址分配,依次对应数组名[0],数组名[1],.....,数组名[n]...
4.字符(串)数组:字符数组与字符串数组的区别是字符数组不含'\0'这个元素,而字符串则会手动或者计算机自动补上'\0'的.
这是一个数组的另一大类,C语言专门建立了一个库即 string.h 来使用字符(串)数组.
这里主要讲了
1>:strcpy():将一个字符(串)(数组)赋值给另一个字符(串)数组. strcpy(a,b)注意:b的长度一定要不大于a的长度;
那拷贝的时候是按照从低地址覆盖数组a的内存空间.
2>:strlen():这里会从字符(串)数组的地址开始扫描计数,一直到'\0'结束. 计数字符数
这里要注意和sizeof()的区别.这里计数字节数,'\0'占1字节,且并不会因\0而停止计数,除非它是数组的最后一个元素.
3>:%s :这里专门设了一个占位符%s来 批量输出 字符(串)数组,同strlen类似,也是遇到'\0' 就会停止输出,如果所打印的数组为字符数组,则计算机会自动打印,比字符数组地址高的相邻数组的字符,直到遇到'\0' 结束打印.
*/ |
|