我试图为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);
}

最佳答案

_Letter::charData是一个数组,而不是指针,因此不能只为它分配另一个数组。使用arrmemcpy的内容复制到其中,或将其类型更改为指针:

typedef struct {
    char character;
    int width;
    int (*charData)[5];
} Letter;

也,
标识符名称不应以_开头,后跟大写字母
NULL只应用于指针;对于字符使用'\0',对于整数使用普通0
不检查malloc的返回值是否为空
你没有释放分配的内存。

10-07 16:34
查看更多