【问题标题】:How should i return struct pointer?我应该如何返回结构指针?
【发布时间】:2021-02-09 19:05:36
【问题描述】:

我一直在写一个游戏物品系统,我需要在函数中创建一个结构体 并返回它的指针,但是,我不知道如何编写函数头

我的代码;

typedef struct {
//some member
}Header;

int main()
{
    Header *head; //create an pointer to capture the address
    head= ItmStartUp();
    ...     //some code
    return 0;
}

Header *header itmStartUp(){ // This line is the root of problem I believe,
                             //but I don't know how to fix it

    Header *head = malloc (100*sizeof(*head)); //create an array of struct
    return head;                               //return that address 
}

当我编译代码时,gcc 返回:

错误:预期为 '=', ' , ' , ' ; '、'asm' 或 'attribute' 在 'itmStartUp' 之前|

我一直在参考这些来源。但是,它对我不起作用,如果我该怎么办 我想返回指针?谢谢

https://cboard.cprogramming.com/c-programming/20380-function-return-pointer-structure.html

Returning a struct pointer

【问题讨论】:

  • 我改了代码,但是返回的类型冲突....对于ItmStartUp,不管是*head/head/&head,我做错了什么?

标签: c pointers return-type


【解决方案1】:

您在此处遇到语法错误:

Header *header itmStartUp()
       ^^^^^^^___ unexpected stuff

此外,您需要在使用它之前定义函数的原型。为了清楚起见,一个示例代码段如下(阅读 cmets):

typedef struct {
    int var;
} Header;

// Function is expected to return Header* type
Header* itm_startup() {
    Header *head = (void *)malloc(sizeof(Header));
    head->var = 10;

    // Returning the initialized 'head' (the type of Header*)
    return head;
}

int main(void) {
    // Calling the function to initialize
    Header *header = itm_startup();

    // Outputting the content of the 'header' pointer
    fprintf(stdout, "%d\n", header->var);

    return 0;
}

【讨论】:

    猜你喜欢
    • 2017-06-13
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多