arrays - 如何将指针分配给结构内的数组?
问题描述
typedef struct
{
uint8_t (*flags)[5];
} type_t;
void setstate(type_t* driver, uint8_t flag)
{
driver->flags[flag] = 1;
}
void printall(type_t* driver)
{
for (int a = 0; a < 5; a++)
{
printf("%d\n", driver->flags[a]);
}
}
int main(int argc, char** argv)
{
static type_t driver[1];
uint8_t (*states)[5] = { 0 };
driver->flags = states;
setstate(driver, 2);
printall(driver);
}
我想将本地数组指针分配给结构内的数组指针,但我似乎无法让它工作..谢谢。
解决方案
您的局部变量states
也是指向数组的指针。我认为您的意思是声明一个实际的数组?然后将指向该数组的指针分配给结构中的字段?反正文是这么说的。您的初始化程序的编写方式,使用 0 而不是 NULL 并在其周围加上额外的 { },我认为您认为您确实声明了一个数组(那么*
?)。
uint8_t states[8];
现在您通常不声明指向整个数组的指针,而是声明指向与数组元素相同类型的指针。所以结构字段将是:
uint8_t* flags; // points to first of 8 consecutive values
然后你可以写
driver->flags= states;
这将意味着。
虽然driver
是一个 1 的数组,但将其称为这样的指针是很奇怪的。如果只有一个元素,那么将其设为数组有什么意义?