c语言课程笔记(数组)
c语言课程笔记(数组)
知识总结
一:一维数组的定义和初始化
1.构成数组的每个数据项称为数组元素;c语言通过数组的下标实现对数组元素的访问。
2.注意:c语言中数组的下标都是从0开始的。
3.注意,引用数组元素时下标可以是整型变量,例如引用score的第i个元素用score[i] ,但在定义数组时不能使用变量定义数组的大小,即下面的定义是非法的。
int score[n] /不正确的定义方式/
4.对一维数组进行初始化时,可将元素初值放在=后面用一对花括号括起来的初始化列表中,即int score[5]={90,80,70,100,95};
5.当数组被声明为静态存储类型或外部存储类型(即在所有函数外部定义)时,则在不显式给出初值的情况下,数组元素将在程序编译阶段自动初始化为0。
6.处理不合法数据的输入(1<=month<=12时执行)
while(month<1 ‖month>12);
printf("The number of days is %d\n",days[month-1]);
容错,保证合法
7.格式
类型 数组名[元素个数];
二:二维数组的定义和初始化
1.格式
类型 数组名[第一维长度][第二维长度];
2.一维数组在内存中占用的字节数为:数组长度×sizeof (基类型) ,二维数组占用的字节数为:第一维长度×第二维长度xsizeof(基类型)。
3.用sizeof运算符来计算一个类型或者变量在内存中所占的字节数才是最准确可靠的方法,也有利于提高程序的可移植性。
4.注意,在不同编译系统中,int型所占的字节数是不同的。
5.c语言中不带下标的数组名具有特殊的含义,它代表数组的首地址。
6.注意,数组第二维的长度声明永远都不能省略。
7.数字要定义成全局数组。
三:向函数传递一维数组
1.若要把一个数组传递给一个函数,那么只要使用不带方括号的数组名作为函数实参调用函数即可(如程序第10行和第11行语句所示).注意,仅仅是数组名,不带方括号和下标
2.由于数组名代表数组第一个元素的地址,因此用数组名作函数实参实际上是将数组的首地址传给被调函数,之所以这样是出于性能方面的考虑。
3.注意:数组作函数形参时,数组的长度可以不出现在数组名后面的方括号内,通第用另一个整型形参来指定数组的长度。
四:排序和查找
1.交换法排序、选择法排序
2.线性查找法(顺序查找)、折半查找
3.线性查找法:线性查找数组元素就是使用查找键(Search key)逐个与数组元素进行比较以实现查找。其查找的基本过程为:利用循环顺序扫描整个数组,依次将每个元素与待查找值比较;若找到,则停止循环,输出其位置值;若所有元素都比较后仍未找到指定的数据值,则结束循环,输出“未找到“的提示信息。
4.当待查找信息有序排列时,折半查找法比顺序查找法的平均查找速度要快得多。折半查找也称为对分搜索。
5.折半查找法的基本思想为:首先选取位于数组中间的元素,将其与查找键进行比较。如果它们的值相等,则查找键被找到,返回数组中间元素的下标。否则,将查找的区间缩小为原来区间的一半,即在一半的数组元素中查找。
五:向函数传递二维数组
1.注意,当形参被声明为一维数组时,形参列表中数组的方括号内可以为空。然而当形参被声明为二维数组时,可以省略数组第一维的长度声明,但不能省略数组第二维的长度声明。
可以解决的问题
1.可以解决有关矩阵的问题,例如计算矩阵边缘元素之和、矩阵交换行、变幻的矩阵等等
利用二维数组进行解决问题。
2.可以解决数组的逆序重放、倒置排序等等,利用数组获得重新排序得到的数组
3.可以解决一些有趣的问题,例如做游戏,有趣的跳跃,石头剪刀布,扫雷游戏地雷数计算,校门外的树等等,利用数组的知识解决一些做游戏的问题。
4.也可以解决一些向量积问题,寻找配对数,与指定数字相同的数的个数等等一些有关数字的问题。
总结:
通过这一段时间对数组的学习,虽然在这个过程中遇到了很多的问题,在写程序的过程中也遇到了不少的问题,在一开始的时候,通常会直接输入一个数组,而不会在for语句后面输入数组,现在我已经记住了它,其中,也会有搞不清情况的时候,但是在学习的过程中我也发现可以通过c语言的知识解决一些有趣的问题,可以解决一些做游戏的问题,同时也将数学中所学到的有关矩阵的问题,即c语言可以解决很多的问题,这让我对它产生了很大的兴趣,困难不是问题,我们学到的是可以用c语言的知识来解决一些问题。在这一段的学习中,我慢慢从不会用数组解题到慢慢地对它有了了解,一点点地学习c语言中有关数组的知识,这一过程中,我学到了很多的知识。
- c语言学习笔记之数组小结
- 【学习笔记】【C语言】字符串数组
- C语言学习笔记_数组
- C语言基本概念笔记《三》之指针,数组,动态数组的创建
- C语言学习笔记(六) -数组 Arrays
- c语言学习笔记39字符数组
- C语言学习笔记之动态分配数组空间
- C语言学习笔记之成员数组和指针
- c语言学习笔记(4)struct和union:柔性数组存储斐波那契数列以及union判断系统大小端
- C语言学习笔记19——数组指针和指针数组分析
- 【达内C++学习培训学习笔记系列】C语言之三循环语句和数组
- C语言学习笔记(19) 多维数组和多维指针分析
- C语言学习笔记-6.数组
- C语言中的数组的一些笔记
- C语言学习笔记:18_数组-二维数组
- 黑马程序员——IOS学习笔记(C语言字符串和数组)
- C语言学习笔记5--数组
- C语言学习笔记-数组-郝斌老师讲解
- C语言学习笔记【结构体01】结构体变量与结构体数组
- 【c语言学习笔记】指针数组和数组指针以及在做题的时候遇到的问题