C++高级编程课程讲义.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:88 大小:9.1MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

C++高级编程课程讲义.pdf

C++高级编程课程讲义.pdf

预览

免费试读已结束,剩余 78 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C++高级编程OverviewModule1:面向过程的C++Module2:面向对象的C++Module3:C++设计模式Module1:面向过程的C++从C到C++内存管理数组字符集和字符串指针和引用函数其它从C到C++语法增强新的运算符变量声明更加灵活函数重载引用类型安全性面向对象封装继承多态内存管理在stack上分配内存简单数据类型不使用new创建对象实例函数调用完成自动销毁线程堆栈的限制在Heap上分配内存malloc还是new?检测内存泄漏防止”野指针”:回收内存后指针会自动为NULL吗?Demo:动态扩充的字符串缓冲区数组(1)声明及初始化inta[]={1,2,3};intb[3]={1,2,3};intc[5]={1,2,3};//c[3]和c[4]的值默认为0inta1[2][3]={{1,2,3},{4,5,6}};inta2[2][3]={{1},{}};//初始化,第一行为1,0,0;第二行为0,0,0inta3[][3]={{},{1,2,3}};inta4[2][]={{1,2,3},{4,5,6}};//错误。必须声明第二维的数目inta5[][3]={1,2,3,4,5,6};//正确数组(2)数组的内存形式数组在内存中的存放全局数组在静态存储区域中存放局部数组,一般在堆栈上存放在堆上动态分配内存线程堆栈的限制:doublearr[500][300]?double*p=newdouble[10];intn=10;double*p=newdouble[n];//n不必是常量double*p=newdouble[400][300];//错误double**p=newdouble[400][300];//错误数组(3)指针表现形式一维数组指针表示constintARRAY_SIZE=5;inta[ARRAY_SIZE]={1,2,3,4,5};int*p=a;考察:(1)a+i,p+i,*(a+i),*a+i,p[i]的含义(2)p++偏移几个字节?a++呢?二维数组指针表示行地址和列地址inta[][3]={{1,2,3},{4,5,6}};考察:a,a+i,*(a+i),*(a+i)+j,*(*(a+i)+j),&a[i][j]的含义数组(4)二维数组的指针表示使用一级指针访问二维数组inta[][3]={{1,2,3},{4,5,6}};int*p=a[0];//将二维数组展开成一维数组的方式访问int*p=a;//错误!考察:p+i,*(p+i),*p+i的含义使用指向一维数组的指针来访问二维数组int(*p)[3]=a;//也可写成:int(*p)[3](a);int*p[3]=a;//错误!Int*p[3];考察:p,p+i,*(p+i),*p+i,*(p+i)+j,*(*(p+i)+j)的含义数组(5)动态创建复杂数组二维数组intm=2;intn=3;int(*p)[3]=newint[2][3];delete[]p;交错数组int*p[2];//p数组包含两个元素,每个元素都是int*类型p[1]=newint[3];//通过p[i]来操作每个数组delete[]p[1];//不能使用deletep或者delete[]p字符集和字符串(1)字符编码ANSI、UNICODE和UTF-8MultiByte和WideCharwchar_t,“L”前缀,wcslen,wcscpy,wcslenwchar_tp1[]=L“abcd”;考察:wcslen(p1)和sizeof(p1)的结果字符集的转换wchar_tp1[]=L"abcd";charp2[10];intlen=wcstombs(p2,p1,sizeof(p1));//len=4‟\0‟字符不计入拷贝字符数目wchar_t*p3=(wchar_t*)malloc(100);mbstowcs(p3,p2,100);mbstowcs_s和wcstombs_sMultiByteToWideChar,WideCharToMultiByte字符集和字符串(2)兼容字符集Windows平台与字符集VisualC++编译器字符集设置选项_UNICODE_MBCS兼容字符集