Struct中的2d数组 - C -

时间:2011-12-06 11:38:17

标签: 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);
}

1 个答案:

答案 0 :(得分:5)

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

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

此外,

  1. 标识符名称不应以_后跟大写字母
  2. 开头
  3. NULL只能用于指针;使用'\0'表示字符,使用普通0表示整数
  4. 您不检查malloc的返回值是否为null
  5. 你没有释放分配的内存。