c - 为什么矩阵列的第一个索引是负数?

标签 c matrix multidimensional-array char coordinates

为什么在这个简单的代码中修改二维数组左下角的点我必须输入坐标m[37][-40]

#include <stdio.h>
#include <stdlib.h>
#define MAX 40

int main()
{
    int i, j;
    char m[MAX][MAX];

    for(i=0; i<MAX; i++){
        for(j=0; j<MAX; j++)
            m[i][j]=' ';
    }

    m[37][-40]='X';

    for(i=0; i<MAX; i++){
        for(j=0; j<MAX; j++)
            printf("%c", m[i][j]);
    }
    return 0;
}

难道不是 m[37][0] 吗?因为行是37列是0...

最佳答案

这可能是因为您在打印循环中没有换行符,而且由于您打印了大部分空格(当然,这些空格是不可见的),所以这种情况更加严重。如果您在内部打印循环之后添加 printf("\n");(以下代码),并替换 m[37][-40]='X';m[37][0]='X';,那么它应该可以工作(当我运行它时它就可以工作):

for(i=0; i<MAX; i++){
    for(j=0; j<MAX; j++)
        printf("%c", m[i][j]);
    printf("\n");
}

我还用句点 ('.') 替换了空格以使其更加明显。

关于c - 为什么矩阵列的第一个索引是负数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31813492/

相关文章:

matlab - matlab中无for循环的行列矩阵乘法

c - C中数据文件的二维数组

c++ - 初始化对象时 {0} 是什么意思?

在 C 中调用结构体

c - 读取多个命令传递给 execvp()

c - 将二维数组转换为一维数组

c++ - 在 3 维中将对象旋转到 "look at"另一个对象?

php - 如何通过 Jquery.post 发布 JSON 多维数据?

c - 存储文件内容的二维数组中可能存在内存损坏

c - 运行时错误(SIGSEGV)