| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1076 人关注过本帖
标题:请教各位问题
只看楼主 加入收藏
onicuka
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2004-6-23
收藏
 问题点数:0 回复次数:4 
请教各位问题

如何动态分配数组,代码如下.

class MyClass { public: MyClass(int a) {

} };

int main(int argc, char* argv[]) { MyClass *pTest; pTest = new MyClass[10]; return 0; }

搜索更多相关主题的帖子: int MyClass pTest 动态 
2004-08-20 13:34
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
[转帖]动态二维数组

我知道用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个整型数组,不就等于开辟一个二维数组吗?

2004-08-20 13:40
onicuka
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2004-6-23
收藏
得分:0 

谢谢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个空间呢.

2004-08-20 14:02
wonderfulday
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-7-28
收藏
得分:0 

用new分配动态数组( 其分配对象中要有一个空的构造函数 )

应在类中多加一个不带参数的构造函数MyClass(){}

先分配空间,再操作


2004-08-20 15:22
kuangjingbo
Rank: 1
等 级:新手上路
帖 子:312
专家分:0
注 册:2004-4-24
收藏
得分:0 

如果要使用数组,必须在类中有一个不带参数的构造函数。

这是因为你在分配数组的时候,没有办法给它的构造函数传递参数。

正如你的pTest = new MyClass[10]; 你自己说,你为它传递了什么参数??


永不放弃!
2004-08-20 15:28
快速回复:请教各位问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022449 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved