将结构成员传递给C中的函数

时间:2014-03-04 12:26:20

标签: c structure

我有一个结构

static struct menu_item menu[] = {
    {1, "More memory"},
    {2, "Less memory"},
    {3, "Test"},
    {4, "Auto-allocate"},
    {5, "Test2"},
    {6, "Exit"},
    {0, ""}
};

我需要调用一个带有2个参数(int, struct menu_item *)的函数。我需要将第三个元素作为参数传递给函数。 int应该是菜单的选择号,第二个参数应该是Test。我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,这应该是一个直截了当的任务。但是,由于基于零的索引,您需要将2传递给函数。

typedef struct menu_item
{
    int n;
    const char* name;
} menu_item;

static struct menu_item menu[] = {
    {1, "More memory"},
    {2, "Less memory"},
    {3, "Test"},
    {4, "Auto-allocate"},
    {5, "Test2"},
    {6, "Exit"},
    {0, ""}
};

#include <stdio.h>

void func(int n, struct menu_item* menu)
{
    menu_item item = menu[n];
    printf("%d %s", menu[n].n, menu[n].name);
}

int main()
{
    func(2, menu);
}