菜鸟问题:如何从堆中分配一个二维整数数组

Losthk 2004-12-24 07:32:05
如何从堆中分配一个二维整数数组
在书上只看到一维的 不知道二维的怎么申请
用malloc()或new都可以
...全文
129 点赞 收藏 13
写回复
13 条回复
Losthk 2004年12月27日
谢谢大家了
回复 点赞
Losthk 2004年12月27日
谢谢大家了
开始给分
回复 点赞
xiaoqiang085 2004年12月25日
一共有两中方法:
1:
用一维指针:
int *ip=new[m*n]
*(ip*i+j)表示 的 就是i行j列的元素
然后释放
2:
和 上面的 同志说的 差不多!


我 也是最近才搞懂的
先卖弄一下。别见笑
回复 点赞
wujian53 2004年12月25日
堆中分配一个二维整数数组

C语言
int *point = (int *)malloc(x * y);
free point;
C++
int *point = new int[x * y];
delete []point;
C++ STL
vector<vector<int> > int_array;
回复 点赞
lovefly_fanny 2004年12月25日
就用单指针就可以。
比方说:a[4][4]
*p=&a;
a[1][4]=*(*p+1)+4;
~~~~~~~~~~~~~~~~~~~~~~
你的意思应该是:
a[1][3]=*( ( *p+1 )+3) );
回复 点赞
lovefly_fanny 2004年12月25日
to newpuple(努力搞好学习):
就用单指针就可以。
比方说:a[4][4]
*p=&a;
a[1][4]=*(*p+1)+4;
这里a[1]][4]有问题吧~~a[4][4]的范围只是a[0][0]```a[3][3];
另外a[1][3]=*( ( *p+1 )+3 );ba
回复 点赞
huaisha83 2004年12月24日
可以使用行指针...不过有限制...
如楼上所说..可以使用boost::multi_array
回复 点赞
北极猩猩 2004年12月24日
这种动态多维数组的管理很困难,需要使用的话建议楼主可以去直接使用boost::multi_array。

如果要自己实现的话,最好也对对实现做一个封装否则在真正的程序中使用起来是很容易出现各种错误的
回复 点赞
mdzhao 2004年12月24日
int **p;
p = new int*[2]; //先开2行
for (int i = 0; i<2;i++)
{
*(p+i) = new int[4]; //再在每一行上面开辟列,共开辟4列
}

for (i=0;i<2;i++)
{
for (int j = 0;j<4;j++)
{
*(*(p+i)+j) = i+j;
}
}
回复 点赞
microsoft_huyee 2004年12月24日
申请
int len;
int** p = new int* [len];
for(int i=0; i<len; i++)
p[i] = new int[len];

释放
for(int i=0; i<len; ++i)
delete [] p[i];
delete [] p;
回复 点赞
newpuple 2004年12月24日
就用单指针就可以。
比方说:a[4][4]
*p=&a;
a[1][4]=*(*p+1)+4;
回复 点赞
autoegg 2004年12月24日
如果第二维固定的话(比如说第二维是4),还可以用:
int (*ppint) [4];
回复 点赞
autoegg 2004年12月24日
用双重指针
int** ppint;
ppint = malloc(N * sizeof(int*));

ppint[0] = (int*)malloc(256*sizeof(int));
ppint[1] = (int*)malloc(100*sizeof(int));
......

回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告