我需要些帮助。我有一个指针数组:
int *ptr = new int[N];我想要一个二维数组的指针,它指向那个一维数组。我知道如何为二维指针分配内存:
int (*nn)[4] = new int [N][4];但是:如何为指向指针的二维指针分配内存?不管怎样,这有可能吗?
我需要在网格上定义邻居。最后,连接应该是这样的:
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];
}
}我只是被分配内存卡住了.
发布于 2015-03-17 06:42:50
如果您想要一个指向int的指针的二维数组,那么您实际上需要一个指向int的指针,并且需要在for循环中分配内存,如下所示:
int *** nn = new int**[N];
for(int i=0; i<N; i++) nn[i] = new int*[4];现在nnx是一个指向int的指针,而*(nnx)是一个int。
评论所说的是真的,尽管ptr不是一个指针数组。但是,您仍然可以通过执行以下操作使nn指向ptr的值:
nn[x][y] = ptr+index;而不是:
nn[x][y] = ptr[index];https://stackoverflow.com/questions/29087807
复制相似问题