将数组值分配给C中的typedef struct数组变量

时间:2015-09-17 12:59:54

标签: c arrays

我正在使用一个包含一些变量和一个数组的typedef结构的库。我正在尝试将指向此类型变量的指针传递给另一个函数,并将值分配给数组。

//typedef in library file
typedef struct
{
    int a;
    int b;
    int arr[5];
} MyType;

... 这是另一个文件

void foo()
{
    MyType newtype;
    //...lots of code

    setArray( &newtype );

return;
}

void setArray ( MyType* mytype )
{
    mytype->arr = {
        1,2,3,4,5,
    };

return;
}

当我尝试编译此代码时,我在

行上收到以下错误
mytpe->arr = {

'{'令牌

之前的预期表达式

我尝试了几种不同的方式,例如mytype->arr[5] = {,但是我遇到了各种语法错误。

我是C的新手,但我知道数组确实充当指向数组中第一个元素的指针。我正在尝试不可能,我需要遍历每个数组的索引并一次分配一个?

1 个答案:

答案 0 :(得分:1)

您不能像这样分配数组。你必须按照元素进行,例如:

mytype->arr[0] = 1;
mytype->arr[1] = 2;
...

或使用memcpy等功能。

const int values[] = {1, 2, 3, 4};
memcpy(mytype->arr, values, sizeof values);

更好地确保尺寸和类型适合。

请注意,在初始化(数组声明和定义的一部分)中,您可以在一个"步骤"中设置数组。但这是另一回事。