发布日期:2016-01-06 11:40 来源: 标签: 编程语言 开发语言 C++指针数组 C++数组指针
本章我们主要学习C++中指针数组和数组指针的区别,下面我们就做一下具体讲解,希望大家多多支持中国站长网络学院。
例如:
double *ptr[3];
double (*ptr)[3];
第一种情况是指针数组,ptr先与[]结合,声明了一个有3个元素的数组;再与*结合,表示其元素为指向double的指针。
第二种情况是数组指针,ptr先与*结合,声明了一个指针;再与[]结合,表示其指向一个有三个double元素的数组。
通常,我们使用指针数组和数组指针,都是因为无法提前确定数组的长度。当然,可以通过指定一个足够大的长度。但是这样会造成空间的浪费。因此要为他们动态分配。C++使用new关键字来动态分配内存:
指针变量名=new 类型名[下标表达式];
需要特别说明的是,这里分配的空间是在“堆”内的,与“栈”内的变量不同,new分配出的空间不会随变量生命周期结束或者超出作用域而自动销毁,需要手动delete:
delete [ ]指向该数组的指针变量名;
那么,这两种类型如何在堆中分配(new)和销毁(delete),及使用呢?(已测试通过)
第一种:指针数组
double *ptr[3];
分配:
ptr[0] = new double[10];
ptr[1] = new double[8];
ptr[2] = new double [3];
使用: 以下三种方式都是正确的。
*(*(ptr+m)+n) = 0.0;
*(ptr+m)[n]=0.0;
ptr[m][n]=0.0;
销毁:
for(int i=0; i<3; ++i)
delete [] ptr[i]; //编译器会自动检测元素个数
第二种:数组指针
double (*ptr)[3];
分配:
double (*ptr)[3];
ptr = new double[3][5];
使用:
*(*(ptr+m)+n) = 0.0;
(*(ptr+m))[n]=0.0; //注意与上面指针数组的区别
ptr[m][n]=0.0;
销毁:
delete []ptr;
使用数组和指针时,一定谨慎再谨慎!

相关评论

专题信息
    Visual C++是一个功能强大的可视化软件开发工具,是高等院校计算机及相关专业主要核心课程。 本教程对Visual C++ 的应用与开发进行了详细系统的介绍,内容主要包括:Visual C++程序的建立,菜单、工具栏和状态栏的创建,对话框和常用控件,窗口、文档与视图,图形绘制,数据库应用,多媒体技术等。 本教程以案例教学为主,各章节都附有大量的实例,并且操作步骤详细,有利于引导读者更好的消化、理解和实际应用本章节所学的知识内容,希望大家能多多支持中国站长网络学院!