张葵花 2023-06-26 20:03 采纳率: 0%
浏览 25

C语言二维数组和指针有关问题

想了很久不知道问题出在哪。


#define YOKO_MAX 20
#define TATE_MAX 20
int* creatMap(void);
int main( void )
{
    int* field[TATE_MAX][YOKO_MAX] = creatMap();
    for (int i = 0; i < TATE_MAX; i++)
    {
        for (int j = 0; j < YOKO_MAX; j++)
        {
            printf("%d\t", *(*(field + i) + j));
        }
    }
}

int* creatMap(void)
{

    int a[TATE_MAX][YOKO_MAX];
    int(*p)[TATE_MAX][YOKO_MAX] = &a;
    int i, j;
    for (int i = 0; i < TATE_MAX; i++)
    {
        for (int j = 0; j < YOKO_MAX; j++)
        {
            if (i == 0 || i == TATE_MAX - 1)
            {
                a[i][j] = 1;
            }
            else if (j == 0 || j == YOKO_MAX - 1)
            {
                a[i][j] = 1;
            }
            else
            {
                a[i][j] = 0;
            }
        }
    }

    return p[TATE_MAX][YOKO_MAX];
}

  • 写回答

4条回答 默认 最新

  • threenewbee 2023-06-26 20:33
    关注
    #include <stdio.h>
    #include <stdlib.h>
    
    #define YOKO_MAX 20
    #define TATE_MAX 20
    
    int** createMap(void);
    
    int main(void)
    {
        int** field = createMap();
    
        for (int i = 0; i < TATE_MAX; i++)
        {
            for (int j = 0; j < YOKO_MAX; j++)
            {
                printf("%d    ", field[i][j]);
            }
            printf("\n");
        }
    
        // 释放内存
        for (int i = 0; i < TATE_MAX; i++)
        {
            free(field[i]);
        }
        free(field);
    
        return 0;
    }
    
    int** createMap(void)
    {
        int** a = (int**)malloc(TATE_MAX * sizeof(int*));
        for (int i = 0; i < TATE_MAX; i++)
        {
            a[i] = (int*)malloc(YOKO_MAX * sizeof(int));
            for (int j = 0; j < YOKO_MAX; j++)
            {
                if (i == 0 || i == TATE_MAX - 1 || j == 0 || j == YOKO_MAX - 1)
                {
                    a[i][j] = 1;
                }
                else
                {
                    a[i][j] = 0;
                }
            }
        }
    
        return a;
    }
    
    
    评论

报告相同问题?

问题事件

  • 请采纳用户回复 8月1日
  • 创建了问题 6月26日

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音