c++高级编程课程讲义

c++高级编程课程讲义

ID:34082844

大小:4.46 MB

页数:88页

时间:2019-03-03

c++高级编程课程讲义_第1页
c++高级编程课程讲义_第2页
c++高级编程课程讲义_第3页
c++高级编程课程讲义_第4页
c++高级编程课程讲义_第5页
资源描述:

《c++高级编程课程讲义》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++高级编程OverviewModule1:面向过程的C++Module2:面向对象的C++Module3:C++设计模式Module1:面向过程的C++从C到C++内存管理数组字符集和字符串指针和引用函数其它从C到C++语法增强新的运算符变量声明更加灵活函数重载引用类型安全性面向对象封装继承多态内存管理在stack上分配内存简单数据类型不使用new创建对象实例函数调用完成自动销毁线程堆栈的限制在Heap上分配内存malloc还是new?检测内存泄漏防止”野指针”:回

2、收内存后指针会自动为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、,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_S

4、IZE=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];//将二维数组展开成一维数组

5、的方式访问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[

6、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(p

7、1));//len=4‟‟字符不计入拷贝字符数目wchar_t*p3=(wchar_t*)malloc(100);mbstowcs(p3,p2,100);mbstowcs_s和wcstombs_sMultiByteToWideChar,WideCharToMultiByte字符集和字符串(2)兼容字符集Windows平台与字符集VisualC++编译器字符集设置选项_UNICODE_MBCS兼容字符集TCHAR,_tcslen,“_T”TCHARt[]=_T("aaa");//如果编译器定义了_UNICODE

8、,sizeof(t)=8,//如果定义了_MBCS,sizeof(t)=4字符集和字符串(3)声明字符串使用指针char*p1="abcd";char*p2="abcd";考察:内存中有几个”abcd”存在,p1==p2是否成立?使用数组charp1[10]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。