-2

我正在尝试更改结构指针的某些值。

struct gtaVars_s {
    int godmode;
};

struct gtaVars_s *gtaVars;

void test() {
     gtaVars->godmode = 1;
}

为什么会test()失败?

我试过改变->to.但这只会给我错误。

此外,我还阅读了有关结构的各种文章,但似乎都没有给我关于这个特定问题的答案。

4

1 回答 1

1

为什么 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 菜单吗?:-)

于 2020-05-08T15:37:13.317 回答