如何在C中为2D数组位置赋值?

如何在C中为2D数组位置赋值?,c,arrays,2d,C,Arrays,2d,所以我是个新手,所以请温柔一点 我已经创建了一个二维数组,60x30,并希望通过双for循环在屏幕上显示为网格。我对网格的每个插槽使用一个简单的字符“.”,只是为了测试 char FrameBuffer[29][59]; for (int i = 0; i <= 29; i++) { for (int j = 0; j <= 59; j++) { FrameBuffer[i, j] = '.'; printf("%c ", Frame

所以我是个新手,所以请温柔一点

我已经创建了一个二维数组,60x30,并希望通过双for循环在屏幕上显示为网格。我对网格的每个插槽使用一个简单的字符“.”,只是为了测试

char FrameBuffer[29][59];
for (int i = 0; i <= 29; i++) 
{
    for (int j = 0; j <= 59; j++)
    {
        FrameBuffer[i, j] = '.';
        printf("%c ", FrameBuffer[i,j]);
    }
    printf("\n");
}
我遇到了一个错误:

Expression must be a modifiable lvalue

FrameBuffer[29][59]
这是一个29x59阵列,您需要一个30x60

请不要将数组声明与数组索引混淆。数组声明完全正常;如果需要30x60,请键入
FrameBuffer[30][60]
。但是,当访问数组时,从索引0开始

只需将代码更改为:

char FrameBuffer[30][60];
for (int i = 0; i < 30; i++)
{
  for (int j = 0; j < 60; j++)
  {
    FrameBuffer[i][j] = '.'; // note the correct syntax here
char帧缓冲区[30][60];
对于(int i=0;i<30;i++)
{
对于(int j=0;j<60;j++)
{
帧缓冲区[i][j]='.';//注意此处的正确语法

编辑

作为一个奇怪的副作用,
FrameBuffer[i,j]
被解释为与预期完全不同的东西。这里的逗号被视为逗号运算符,一种特殊的运算符,它计算左表达式
i
,然后计算右表达式
j
,然后返回
j

这意味着代码最终完全等同于
FrameBuffer[j]='.
。其中
FrameBuffer[j]
是一个完整的数组,而不是
char
。不能用这种方式为数组赋值,数组不是“左值”,这解释了编译器错误文本

帧缓冲区[i,j]='

printf(“%c”,帧缓冲区[i,j])

将这两条语句修改为

FrameBuffer[i][j] = '.';

printf("%c ", FrameBuffer[i][j]);
[i,j]
对编译器来说没有任何意义。它只是一个无效的语法

还可以更正您的数组


FrameBuffer[29][59]
它是由
row=29
col=59


将其更改为
FrameBuffer[60][30];

FrameBuffer[i,j]
-->
FrameBuffer[i][j]
(此处C和Pascal语法不同)键入一个……FrameBuffer[i][j]并使用0到i我不是专家。
FrameBuffer[i][j] = '.';

printf("%c ", FrameBuffer[i][j]);