如何将2D阵列从1D变成1D? [英] How to turn 2d array out of 1d one?
本文介绍了如何将2D阵列从1D变成1D?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
要访问任何元素,请使用*(Ptr + i)
.
To access any element I use *(Ptr + i)
.
有什么方法可以将2D数组放入分配的内存中,以便使用array[i][j]
访问任何元素?
Is there any way to put 2D array into the allocated memory in order to access any element using array[i][j]
?
这是代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *Ptr;
Ptr = malloc(M*N*sizeof(int));
for (i = 0; i <= M * N; i++)
*(Ptr + i) = 1 + rand()%10;
return 0;
}
推荐答案
示例
#include <stdio.h>
#include <stdlib.h>
#define N 4
#define M 3
int main()
{
int *Ptr;
int (*p)[M];
int i,j;
Ptr = malloc(M*N*sizeof(int));
for (i = 0; i < M * N; i++){
*(Ptr + i) = 1 + rand()%10;
// printf("%d ", Ptr[i]);
}
// printf("\n");
p=(int (*)[M])Ptr;//p[N][M]
for(i = 0; i < N ;++i){
for(j = 0; j < M;++j)
printf("%d ", p[i][j]);
printf("\n");
}
return 0;
}
这篇关于如何将2D阵列从1D变成1D?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文