Struct中的2d数组 - C -

use*_*369 1 c arrays struct

我试图将一个数组分配给我的letter.charData,但我收到此错误:

IntelliSense:表达式必须是可修改的左值

我试图将我的数组arr添加到letter.charData

提前致谢!

struct _Letter{
    char character;
    int width;
    int charData[8][5];
};

typedef struct _Letter Letter;

Letter *allocLetter(void)
{
    Letter *letter;

    letter = (Letter*) malloc(1 * sizeof(Letter));

    letter->character = NULL;
    letter->width = NULL;

    /* charData? */

    return letter;
}

int main(void)
{ 
    Letter letter = *allocLetter();

    int arr[8][5] = 
    {
        0,0,0,0,0,
        1,0,0,0,0,
        1,0,0,0,0,
        1,0,0,0,0,
        1,0,0,0,0,
        1,0,0,0,0,
        1,0,0,0,0,
        1,0,0,0,0
    };

    letter.character = '1';
    letter.charData = arr;

    return(0);
}
Run Code Online (Sandbox Code Playgroud)

Fre*_*Foo 5

_Letter::charData是一个数组,而不是一个指针,所以你不能只为它分配另一个数组.要么将arr内容复制到其中memcpy,要么将其类型更改为指针:

typedef struct {
    char character;
    int width;
    int (*charData)[5];
} Letter;
Run Code Online (Sandbox Code Playgroud)

也,

  1. 标识符名称不应_以大写字母开头
  2. NULL应该只用于指针; 使用'\0'的字符,普通0的整数
  3. 您不检查mallocnull 的返回值
  4. 你没有释放分配的内存.