通过函数传递结构

问题描述 投票:0回答:1

我正在尝试用 C 语言编写程序。

我知道您可以通过函数传递结构的特定元素,但是是否可以通过函数传递整个结构,类似于如何通过函数传递整个一维数组?我正在尝试通过函数推送电影 num[1,2,3] 等。我很确定您可以使用 for 循环传递它,但是是否可以在不使用循环的情况下完整地传递结构?我的代码如下。

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

void InputData(struct movie *num[50]);

int main()
{
    struct movie
    {
        char name[50];
        int curatornum;
        int votes;
    };

    struct movie *num[50];

    for (int i = 0; i <= 50; i++)
    {
        num[i] = (struct movie *)malloc(1 * sizeof(struct movie *));
    }

    InputData(num);

    for (int i = 50; i > 0; i--)
    {
        free(num[i]);
    }
}

void InputData(struct movie *num[50])
{
    //Compiler gives an error: conflicting types for 'InputData'void InputData(struct movie *num[50]
}
c function structure
1个回答
1
投票

是否可以通过函数传递整个结构,

是的。按值传递是常态,如果你不小心,就会进行大量复制。

我正在尝试通过函数推送电影 num[1,2,3] 等...

就是上面提到的不小心抄袭。

您需要将指针和大小传递给使用数据的函数。复制会破坏性能。

© www.soinside.com 2019 - 2024. All rights reserved.