文章标题 第十二周学习报告

来源:互联网 发布:mysql offset limit 编辑:程序博客网 时间:2024/06/05 11:20

c++第四章学习总结
这周的c++的
学习主要是围绕数组展开。从一维数组到二维数组并学习了字符串的一些知识。一维数组相对比较单调,主要作用是存储一些数据,要记住的是数组的类型由数组元素类型和表达式两方面构成。要注意的是C++ 不提供对数组的
下标范围检查
一维数组的访问分为两种:下标方式与间址方式。但由于上述注意点,下标访问往往会出现错误,所以我认为指针的访问更加稳妥,但指针访问的一些格式有点难记。比如
a == & a [ 0 ]
a + 1 == & a [ 1 ]
a + i == & a [ i ]

*a == a [ 0 ]
* ( a + 1 ) == a [ 1 ]
* ( a + i ) == a [ i ]
还有一个大项是指针数组的各种类型, 分别为指向基本数据类型的指针数组,指向数组的指针数组和指向函数的指针数组。使用指针数组,可以管理复杂的对象,例如字符串、函数以及类对象。
其次到二维数组,也就是每一个元素是类型相同、长度相等的一维数组,以指针方式访问二维数组可以类比一维数组,并类推到n维数组。
从一维数组元素的地址关系可知:数组名代表数组的首地址
任一数组元素的地址,可以用数组名加偏移量表示
偏移量单位是数组元素的大小

地址值

a & a[ 0 ]
a + 1  & a[ 1 ]
a + 2  & a[ 2 ]
a + i  & a[ i ]

元素值
a [ 0 ]  * a
a [ 1 ]  * ( a + 1 )
a [ 2 ]  * ( a + )
a [ i ]  * ( a + i )
以上结论可以推广到多维数组,二维数组的每一个元素是同构的一维数组。
除此以外我们还讲解了两种简单排序法,选择排序法和冒泡排序法。
一是选择排序法
一·选择排序法
算法描述:
for( i=0; i小于n-1; i ++ )
{
* 从a[i]到a[n-1]中找最大元素a[t];
把 a [ t ] 与 a [ i ] 交换
}
* 细化寻找最大元素算法:
每一趟寻找中,设变量 t,记录当前最大元素下标:
for( j=i+1; j小于n; j ++ )
if( a[j]>a[t] )
t=j;
由此实现排序。
二是冒泡排序法。
通过相邻两个元素比较抓换位置由此实现排序。
最后是动态存储,new和delete操作符的使用。
new 运算符动态分配堆内存
使用形式: 指针变量 = new 类型(常量);
指针变量 = new 类型[表达式];
作用:从堆分配一块“类型”大小的存储空间,返回首地址
其中:“常量”是初始化值,可缺省
创建数组对象时,不能为对象指定初始值
delete 运算符释放已分配的内存空间
使用形式: delete 指针变量 ;
delete [] 指针变量 ;
其中:“指针变量”必须是一个 new 返回的指针
以上是这周的专业课的学习内容,还有些细节需要我自己去动手操作理解。由此更深入的了解数组的使用。