gpt4 book ai didi

c - 如何在 C 中使用结构体、指针和函数?

转载 作者:行者123 更新时间:2023-11-30 15:08:42 28 4
gpt4 key购买 nike

我已经学会了如何使用函数、结构体和指针。我想将它们合而为一。但我写的代码似乎不起作用。编译器告诉我测试是一个未声明的标识符。这是代码:

#include <stdio.h>
#include <stdlib.h>

struct character
{
int *power;
};

void test (use_power)

int main ()
{
test (use_power)
printf("%d\n",*power);

return 0;
}

void test ()
{
int use_power = 25;
struct character a;
a.power = &use_power;
}

最佳答案

你的代码有很多错误,甚至无法编译

  1. 缺少多个分号。
  2. 这里隐式声明test()

    test (use_power)

    也缺少分号。

  3. power 未在 main() 中声明。

  4. 这一行

    void test use_power()

    没有意义,无效,也没有分号。

  5. 最后定义的 test() 中的 a 实例是 test() 的本地实例,因此将被释放当 test() 返回时。 use_power int 具有完全相同的问题,尝试从函数中提取它的地址是没有用的,因为在函数返回后您无法访问它。

我不知道你想做什么,但这可能是吗?

#include <stdio.h>
#include <stdlib.h>

struct character {
int *power;
};

/* Decalre the function here, before calling it
* or perhaps move the definition here
*/
void test(struct character *pointer);
/* ^ please */

int
main(void) /* int main() is not really a valid signature */
{
struct character instance;
test(&instance);
if (instance.power == NULL)
return -1;
printf("%d\n", *instance.power);
free(instance.power);
return 0;
}

void
test(struct character *pointer)
{
pointer->power = malloc(sizeof(*pointer->power));
if (pointer->power != NULL)
*pointer->power = 25;
}

关于c - 如何在 C 中使用结构体、指针和函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37199061/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com