找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 358|回复: 4

请教各位问题

[复制链接]
发表于 2009-10-31 01:04:54 | 显示全部楼层 |阅读模式 IP:江苏扬州
如何动态分配数组,代码如下.
class MyClass { public: MyClass(int a) {
} };
int main(int argc, char* argv[]) { MyClass *pTest; pTest = new MyClass[10]; return 0; }
发表于 2009-10-31 01:04:55 | 显示全部楼层 IP:江苏扬州
我知道用new可以动态开辟一维数组,例如int n=3; int *pi=new int[n]; 但是如果开辟二维数组的话,必须得确定第二维的大小,例如int *ppi[6]=new int[n][6]; 如何将第二维也变成一个变量,而没有错误?
int **p = new int* [m]; for(i = 0 ; i < m ; i++) p[i] = new int[n];
一个比较典型的例子是二维数组的动态申请和释放:
#include<iostream> #include<iomanip> using namespace std; void main() { //动态获得二维数组的尺寸 int m=0,n=0; cout<<"input size: "; cin>>m>>n; if(m<=0||n<=0) exit(-1); //动态申请二维数组 int i,j; int **p=new int* [m]; for(i=0;i<m;i++) p[i]=new int[n]; //为数组元素赋值 for(i=0;i<m;i++) for(j=0;j<n;j++) p[i][j]=i*j;
//打印二维数组。 for(i=0;i<m;i++) { for(j=0;j<n;j++) cout<<setw(3)<<p[i][j]; cout<<endl; } //释放数组。 for(i=0;i<m;i++) delete[] p[i]; delete[] p; }
CPPCN论坛高手注释:
int i,j; int **p=new int* [m]; for(i=0;i<m;i++) p[i]=new int[n];
int **p声明了一个二级指针,指针指向一个新开辟的一级指针数组,数组包含m个元素, p[i]=new int[n]中,p为二级指针,p[i]为一级指针,p[i]=new int[n]就是给p[i]新开辟一个int型的数组,数组的元素个数为n个. 这样p指向m个一级指针,这m个一级指针又各自指向n个整型数组,不就等于开辟一个二维数组吗?
回复

使用道具 举报

发表于 2009-10-31 01:04:56 | 显示全部楼层 IP:江苏扬州
谢谢live41的回答,不过我的问题不是这样,如上述的列子,比如
class MyClass { public: MyClass() {
} };
int main(int argc, char* argv[]) { MyClass *pTest; pTest = new MyClass[10]; return 0; }
这种情况是成立的,构造涵数中没有参数,动态的给pTest分配了10个空间,
不过
class MyClass { public: MyClass(int a) {
} };
int main(int argc, char* argv[]) { MyClass *pTest; pTest = new MyClass[10]; return 0; }
这种情况是构造涵数中带有参数,上述程序编译不通过,问题是如何在有参数的构造涵数的情况下,动态给pTest分配 10个空间呢.
回复

使用道具 举报

发表于 2009-10-31 01:04:57 | 显示全部楼层 IP:江苏扬州
用new分配动态数组( 其分配对象中要有一个空的构造函数 )
应在类中多加一个不带参数的构造函数MyClass(){}
先分配空间,再操作
回复

使用道具 举报

发表于 2009-10-31 01:04:59 | 显示全部楼层 IP:江苏扬州
如果要使用数组,必须在类中有一个不带参数的构造函数。
这是因为你在分配数组的时候,没有办法给它的构造函数传递参数。
正如你的pTest = new MyClass[10]; 你自己说,你为它传递了什么参数??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 13:32 , Processed in 0.135731 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表