首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指向指针的指针的动态内存管理(c++)

指向指针的指针的动态内存管理(c++)
EN

Stack Overflow用户
提问于 2015-03-17 06:05:41
回答 1查看 50关注 0票数 0

我需要些帮助。我有一个指针数组:

代码语言:javascript
复制
int *ptr = new int[N];

我想要一个二维数组的指针,它指向那个一维数组。我知道如何为二维指针分配内存:

代码语言:javascript
复制
int (*nn)[4] = new int [N][4];

但是:如何为指向指针的二维指针分配内存?不管怎样,这有可能吗?

我需要在网格上定义邻居。最后,连接应该是这样的:

代码语言:javascript
复制
for (int Vertex = 0; Vertex < N; ++Vertex) {
    nn[Vertex][0] = ptr[(Vertex + 1) % N];
    nn[Vertex][1] = ptr[(Vertex + N - 1)% N];
    nn[Vertex][2] = ptr[(Vertex + L) % N];
    nn[Vertex][3] = ptr[(Vertex + N - L) % N];
    if (Vertex % L == 0) {
        nn[Vertex][1] = ptr[Vertex + L - 1];
    }
    if((Vertex + 1)%L == 0){
        nn[Vertex][0] = ptr[Vertex - L + 1];
    }
}

我只是被分配内存卡住了.

EN

回答 1

Stack Overflow用户

发布于 2015-03-17 06:42:50

如果您想要一个指向int的指针的二维数组,那么您实际上需要一个指向int的指针,并且需要在for循环中分配内存,如下所示:

代码语言:javascript
复制
int *** nn = new int**[N];
for(int i=0; i<N; i++) nn[i] = new int*[4];

现在nnx是一个指向int的指针,而*(nnx)是一个int。

评论所说的是真的,尽管ptr不是一个指针数组。但是,您仍然可以通过执行以下操作使nn指向ptr的值:

代码语言:javascript
复制
nn[x][y] = ptr+index;

而不是:

代码语言:javascript
复制
nn[x][y] = ptr[index];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29087807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档