首页 > 解决方案 > 我正在尝试使用指针通过函数更改结构中的值,但是在函数中输入地址时出现错误

问题描述

我有一个程序,我首先在包含的 .h 文件中创建一个 typedef 结构,如下所示

typedef struct {
 uint16_t x, y;
 } vector_t;

然后我根据上面的定义在我的 main 中创建一个结构,就像这样

vector_t vec = {5,10};

然后尝试在下面的函数中使用它

void initVector(vector_t *v) {
 (*v).x = 10;
 (*v).y = 20;  
}

我输入了我的函数来打印这样的语句。

printf("%d %d\n innit \n",vec.x,vec.y);

void initVector(&vec);

printf("%d %d\n \n",vec.x,vec.y);

但是,当我尝试构建程序时,出现以下错误

expected declaration specifiers or '...' before '&' token

当函数被注释掉时,打印语句给出了向量,所以我认为这不是问题,但我不明白为什么它不应该工作。

任何帮助,将不胜感激

标签: cpointersstruct

解决方案


你想要的是调用函数initVector,而不是声明它,所以你必须替换

void initVector(&vec);

只需

initVector(&vec);

顺便说一句,在函数 initVector 中,您可以编写:

void initVector(vector_t *v) 
{
    v->x = 10;
    v->y = 20;  
}

推荐阅读