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

标签 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。我该怎么做?

最佳答案

如果我正确理解这个问题,这应该是一个简单的任务。但是,由于从零开始的索引,您需要将 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);
}

关于c - 将结构体成员传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22171935/

相关文章:

c - 带有调试信息的二进制文件的 objdump 产生损坏的输出

c - 为什么 printf 中的\n 不打印 char 数组的值或旧值?

c - 动态结构体数组

c - 嵌套结构和指针

c - 将由三个结构组成的链表传递给函数

c - GObject 样本 : undefined reference to `product_finalize' ?

php - 自定义 AJAX 服务器

c - 为什么我不能在 C 中初始化包含函数指针的结构数组?

Python,引用基类中的子属性和方法(反之亦然)必须有更好的方法

c - 传递 char 数组但不包含空终止字符