如何将2D阵列从1D变成1D? [英] How to turn 2d array out of 1d one?

查看:151
本文介绍了如何将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆