一开始没做笔记,大家想看的话可以参考这里
博客主要是观看青岛大学-王卓老师的视频时的总结或者个人笔记。
基础知识补充
元素类型说明
这里ElemType代表你到data的类型,比如int float char等等
如果不想换可以提前声明,比如用typedef char ElemType这样就代表这个 ElemType是一个字符型。
如果我们需要的是一个结构体变量,则可以这样
这个结构体中一个是float型到p 还有一个int型的e,这里就用里Polynomial来作为这个结构体的类型,下面就用Polynomial来指明其类型
数组定义
第一个中,data[MaxSize]中存放的是第一个元素的地址,也就是首地址,当然也可以直接定义一个指针变量,进行动态分配
这里是先定义了个线性表L,再用内存分配函数对其进行内容的分配。
C语言的内存动态分配
malloc的括号里,sizeof(ElemType)是计算了ElemType的字节数,如int就是4个字节,char就是1个字节,然后乘个maxsize代表开辟的空间。比如就是int型的变量,maxsize是200,这样就开辟了800个空间地址,然后其那面的类型是int,也就是800个地址,4个一组分成了200组。
注意,(Elemtype *)这个括号是强制类型转换运算,前面那个 ** 号 **因为分配好的结果是个指针,所以进去也要是指针,所以代表的指针,后面那个号就是乘的意思了
c++的动态储存分配
new就是分配空间,
c++中的参数传递
这里比如a=1 b=2然后传入函数,但只是函数中 m n的值变化了,a b的值没有变化
下面这个a b的数值就交换了
这里传入swap函数的是a和b的地址也就是p1,p2,进入后*m就代表a的值,*n是b的值,*m *n交换了,也就是a b的值交换了,所以数值改变了
这里传进去的依然是a和b的地址,但m代表的是a的地址,n代表的是b的地址,在函数中,m指向了b的地址,n指向了a的地址,所以对外部的a b没有任何影响。
传地址方式–数组名作参数
这里就是将a[10]的首地址传到了sub函数中,然后对其重新赋值,hello就变为了world,注意这里char b[]不能定义大小,因为我们不知道传入地址是多大的