我试图为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
是一个数组,而不是指针,因此不能只为它分配另一个数组。使用arr
将memcpy
的内容复制到其中,或将其类型更改为指针:
typedef struct {
char character;
int width;
int (*charData)[5];
} Letter;
也,
标识符名称不应以
_
开头,后跟大写字母NULL
只应用于指针;对于字符使用'\0'
,对于整数使用普通0
不检查
malloc
的返回值是否为空你没有释放分配的内存。