c - 我正在尝试使用指针通过函数更改结构中的值,但是在函数中输入地址时出现错误
问题描述
我有一个程序,我首先在包含的 .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
当函数被注释掉时,打印语句给出了向量,所以我认为这不是问题,但我不明白为什么它不应该工作。
任何帮助,将不胜感激
解决方案
你想要的是调用函数initVector,而不是声明它,所以你必须替换
void initVector(&vec);
只需
initVector(&vec);
顺便说一句,在函数 initVector 中,您可以编写:
void initVector(vector_t *v)
{
v->x = 10;
v->y = 20;
}
推荐阅读
- ios - kCMSampleBufferAttachmentKey_TrimDurationAtStart 崩溃
- reactjs - 反应最终形式 - 验证返回键和值而不是字符串
- reactjs - Axios - 刷新令牌循环
- postman - 如何禁用邮递员应用程序的自动更新
- c++ - std::async 线程中的成员变量
- post - Loopback POST 条目数组?
- authentication - 用于登录 Cloud Run (GCP) 上的节点 api 的标头中的 JWT
- node.js - 我是否需要在前端应用程序和 Firebase 数据库之间再增加一层安全性?
- c# - 来自 Excel 工作表的 C# 变量
- python - Safari 中的文本框没有从 Selenium+Python 脚本中获取整个字符串