C语言04
数组:
数组是一种存储多个相同数据类型的数据类型。
数组一种构造数据类型,
元素,数组里面的每个数据成员,
定义: (1) [类型修饰符] 变量名[数组大小(常量表达式)]={初始值};
(2) int arry []={1,2,3,4,5}; 根据大括号里的数据,创建一个数组,并初始化,
(3) int arry[3]={1,2,3}; 创建一个三元素数组,并用后面大括号的数据进行初始化,其他值默认为0;
(4) int arry[50]={0};创建一个包含50个元素的数组,,然后用后面大括号里面的值,对每一个元素初始化。
数组的注意事项: (1)数组在内存中是一段连续的内存空间
(2)数组占的内存大小,等于元素个数乘以每个元素所占空间,
(3)初始化的数据个数不能超过数组定义的个数(4)既不指定个数,也没有在初始化的时候给出个数
(4)sizeof 求一个变量在内存中占多大的内存,
遍历整个数组:数组的访问 通过数组的下标来实现的,下表的范围是[0,n-1];
具体语法:数组名[下标]; 数组中的arr[i]相当于基本数据类型的a,。
数组越界:访问了数组之外的内存;当使用下标访问数组的时候,下标值可以超过数组的范围,但是编译器却不会进行检查,所以数组越界很危险,容易导致系统崩溃,因次,再使用数组的时候,必须保证没有越界。 在处理数组下标时一定要注意是否越界,
数组排序:数组中存放的是数据,如同随随机数一样,数组里面的数据是无序的,但很多情况下,我们都需要一组有序的数据,
常用的排序算法:(1)冒泡排序,(2)选择排序(相对来水哦性能好点)(3)快速排序(面试时最长用的)(4)基数排序,计数排序,桶排序,堆排序,哈西排序
[13种排序详解] 舞动的排序。。
冒泡排序:从左到右,执行多次循环,每次循环中也是从左到右,每次比较也是从左到右,比较相邻之间数字的大小,外层循环控制,如果需要交换就进行交换,(2个 for 循环 终止条件, i<n-1;j<n-1-i;)
冒泡,(1)循环的终止条件,循环多少次 趟数n-1,每趟的次数 n-1-i
(2)每次比较的是相邻的两个数, [j]和[ j+i]进行比较,
字符数组;当一个数组里面,存放的数据全部是字符时候,就是一个字符数组, char arr[]={'a','b','c','d','e','f','g'};
字符串,"lanou", "150835"; 存储字符串,使用字符数组,打印字符串 [%s]
字符串与字符数组的关系:字符串是字符数组,但是字符数组不一定是字符串;字符串会自动默认在末尾时 添加 '\0',是字符串结束的标志,有标志才是字符串,否则为字符数组。
如果,用字符数组去接收一个字符串,一定要比数组的元素个数多。
字符串处理函,有四个:strlen();strcpy;strcmp;strcat;
(1)字符串长度函数,strlen 求的是字符的个数,而不是字符元素的个数,不包含‘\0’,;
(2)字符串拷贝函数strcpy() strcpy(a,b) 把b拷贝到a中
(3)字符串拼接函数strcat() 拼接函数,将第二个字符串拼接到第一个参数的字符串后面,直接修改第一个字符串,即第一个字符串会被更改。
(4)字符串比较 stracmp() 将两个字符串按照从左到右的顺序,挨个字符按照ascii码表里 值进行比较,直到出现不同的字符,或者到达‘\0’,返回的是两个字符的差值。