我有一个数组,ı想要用指针更改,但数组是嵌套的字符数组,就像char数组[][]我如何在函数中更改array.

char MAP[ROW][COLUMN] = {
    "00000000000000000000",
    "0                  0",
    "0                  0",
    "0                  0",
    "0                  0",
    "0                  0",
    "0                  0",
    "0                  0",
    "0                  0",
    "00000000000000000000",
};

for (int y = 0; y < ROW; y++)
{
    for (int x = 0; x< COLUMN; x++)
    {
        if (MAP[y][x] != '0')
        {
            MAP[y][x] = ' ';
        }
    }
}

我想要在函数中更改这个array.

推荐答案

您可以像这样声明该函数

void change( char MAP[][COLUMN], int row )
{
    for (int y = 0; y < row; y++)
    {
        for (int x = 0; x< COLUMN; x++)
        {
            if (MAP[y][x] != '0')
            {
                MAP[y][x] = ' ';
            }
        }
    }
}

把它叫成

change( MAP, ROW );

在这种情况下,至少必须在函数声明之前定义标识符COLUMN.

或者在以下情况下编译器是否支持可变长度数组

void change( int row, int column, char MAP[][column] )
{
    for (int y = 0; y < row; y++)
    {
        for (int x = 0; x< column; x++)
        {
            if (MAP[y][x] != '0')
            {
                MAP[y][x] = ' ';
            }
        }
    }
}

把它叫成

change( ROW, COLUMN, MAP );

C++相关问答推荐

数组元素的编号索引

C:gcc返回多个错误定义,但msvc—不""'

不同到达时间的轮询实现

这是一个合法的C Strdup函数吗?

C语言中的strstr问题

带有sigLongjMP中断I/O的异常处理程序

当输入负数时,排序算法存在问题

GCC不顾-fno-Builtin-SINCOS旗帜向SINCOS发出呼唤

对重叠字符串使用MemMove

函数的限制限定指针参数允许优化调用方函数吗?

将回调/基于事件的C API转换为非回调API

如何在VSCode中创建和使用我自己的C库?

C";中的ANN运行时判断失败#2-变量outputLayer;周围的堆栈已损坏.运行后出错

无法识别C编程语言的语法,如书中所示

为什么二进制文件的大小不会随着静态数据的大小而增加?

在我的函数中实现va_arg的问题

C程序printf在getchar while循环后不工作

为什么孤儿进程在 Linux 中没有被 PID 1 采用,就像我读过的一本书中声称的那样?

如何为avr atmega32微控制器构建C代码,通过光电二极管捕获光强度并通过串行通信传输数据

变量的指针右对齐,函数的指针左对齐