我正在使用一个包含一些变量和一个数组的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的新手,但我知道数组确实充当指向数组中第一个元素的指针。我正在尝试不可能,我需要遍历每个数组的索引并一次分配一个?
答案 0 :(得分:1)
您不能像这样分配数组。你必须按照元素进行,例如:
mytype->arr[0] = 1;
mytype->arr[1] = 2;
...
或使用memcpy等功能。
const int values[] = {1, 2, 3, 4};
memcpy(mytype->arr, values, sizeof values);
更好地确保尺寸和类型适合。
请注意,在初始化(数组声明和定义的一部分)中,您可以在一个"步骤"中设置数组。但这是另一回事。