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

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

ID:49563689

大小:3.75 MB

页数:89页

时间:2020-02-25

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

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

1、C++高级编程OverviewModule1:面向过程的C++Module2:面向对象的C++Module1:面向过程的C++从C到C++内存管理数组字符集和字符串指针和引用函数其它从C到C++语法增强新的运算符变量声明更加灵活函数重载引用类型安全性面向对象封装继承多态内存管理在stack(栈)上分配内存简单数据类型不使用new创建对象实例函数调用完成自动销毁在Heap(堆)上分配内存malloc还是new?检测内存泄漏防止”野指针”:回收内存后指针会自动为NULL吗?Demo:动态扩充的字符串缓冲区数组(1)声明及初始化inta[]={1,2,3};in

2、tb[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)数组的内存形式数组在内存中的存放全局数组在静态存储区域中存放局部数组,一般在堆栈上存放在堆上动态分配内存doub

3、le*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,

4、2,3},{4,5,6}};考察:a,a+i,*(a+i),*(a+i)+j,*(*(a+i)+j),&a[i][j]的含义a+i表示二维数组a的第i行的地址,*(a+i)表示指向i行a[i][0]首指针,*(a+i)+j是指向元素a[i][j]的指针,*(*(p+i)+j)表示读取的元素的内容数组(4)二维数组的指针表示使用一级指针访问二维数组使用指向一维数组的指针来访问二维数组inta[][3]={{1,2,3},{4,5,6}};int*p=a[0];//将二维数组展开成一维数组的方式访问int*p=a;//错误!考察:p+i,*(p+i),*p+i

5、的含义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[m];//p数组包含两个元素,每个元素都是int*类型p[1]=newint[3];//通过p[i]来操作每个数组deletep[1];//不能使用deletep或者delete[]p字符集和字符串(

6、1)字符编码ANSI、UNICODE和UTF-8MultiByte和WideCharwchar_t,“L”前缀,wcslen,wcscpy,wcslen字符集的转换mbstowcs_s和wcstombs_sMultiByteToWideChar,WideCharToMultiBytewchar_tp1[]=L“abcd”;考察:wcslen(p1)和sizeof(p1)的结果wchar_tp1[]=L"abcd";charp2[10];intlen=wcstombs(p2,p1,sizeof(p1));//len=4’’字符不计入拷贝字符数目wchar

7、_t*p3=(wchar_t*)malloc(100);mbstowcs(p3,p2,100);字符集和字符串(2)兼容字符集Windows平台与字符集VisualC++编译器字符集设置选项_UNICODE_MBCS兼容字符集TCHAR,_tcslen,“_T”TCHARt[]=_T("aaa");//如果编译器定义了_UNICODE,sizeof(t)=8,//如果定义了_MBCS,sizeof(t)=4字符集和字符串(3)声明字符串使用指针使用数组char*p1="abcd";char*p2="abcd";考察:内存中有几个”abcd”存在,p1==p

8、2是否成立?charp1[10]={‘a’,‘b’,‘c’,‘d’

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

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

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