我正在尝试更改结构指针的某些值。
struct gtaVars_s {
int godmode;
};
struct gtaVars_s *gtaVars;
void test() {
gtaVars->godmode = 1;
}
为什么会test()失败?
我试过改变->to.但这只会给我错误。
此外,我还阅读了有关结构的各种文章,但似乎都没有给我关于这个特定问题的答案。
为什么 test() 失败?
test()似乎不是从C 语法所要求的main()从 调用或调用的函数之一。main()
我试过改变
->to.但这只会给我错误。
那是因为您试图通过指针访问结构对象。如果使用指针访问结构对象的内容,则 only->是允许的。
为什么我说“尝试”?
因为您从未为提供的示例中指向的结构分配内存gtaVars,所以在任何一种情况下都会失败。
例如,您需要做的是通过分配内存malloc()并调用test()from main()。
不要忘记free()动态分配内存来释放之前分配的内存malloc()。
我还将指针作为参数传递,而不是使用关于可读性和维护的全局指针:
#include <stdio.h>
#include <stdlib.h>
struct gtaVars_s {
int godmode;
};
void test(struct gtaVars_s *);
int main(void)
{
struct gtaVars_s *gtaVars = malloc(sizeof(*gtaVars));
test(gtaVars);
printf("godmode is %d.",gtaVars->godmode);
free(gtaVars);
}
void test(struct gtaVars_s *gtaVars) {
gtaVars->godmode = 1;
}
输出:
godmode is 1.
个人旁注:
GTA:V 还没有足够多的带有上帝模式的可用 mod 菜单吗?:-)