C 如何将变量设置为结构的名称?

C 如何将变量设置为结构的名称?,c,variables,struct,C,Variables,Struct,所以现在我正在做一个程序,包括创建许多以机场目的地命名的结构,但我遇到了一个问题,我似乎找不到解决方案。如何使用变量而不是字符串本身来给出结构的名称?例如: struct airport { char name; int capacity; } int main(void) { id = "dubai"; struct airport id; } 我想用它来创建结构: struct airport dubai; 因为id是一个变量,所以您试图将一个变量声明为

所以现在我正在做一个程序,包括创建许多以机场目的地命名的结构,但我遇到了一个问题,我似乎找不到解决方案。如何使用变量而不是字符串本身来给出结构的名称?例如:

struct airport {
    char name;
    int capacity;
}

int main(void)
{
    id = "dubai";
    struct airport id;
}
我想用它来创建结构:

struct airport dubai;

因为id是一个变量,所以您试图将一个变量声明为一个变量。在任何编程语言中,都不能两次声明同一个变量。
你为什么要这样做?你到底需要什么?如果我们确定了您在这里实现的逻辑,那么我们可能可以解决这个问题。


在编译时查看内存中声明的变量,变量中的值在运行时出现。如果执行此操作,则不能执行此操作,因为将在运行时分配duabi,而在编译时声明结构变量。

作为模块示例:

struct airport{
    char *name;
    int capacity;
} all_airports[MAX+AIRPORTS];
int nextAirport;

struct airport *newAirport(char *name, int capacity)
{
    all_airports[nextAirport].name= malloc(strlen(name)+1);
    strcpy(all_airports[nextAirport].name, name);
    all_airports[nextAirport].capacity= capacity;
    return(&all_airports[nextAirport++]);
}
现在,您可以使用以下各项创建机场:

int main(){
    struct airport *myAirport= newAirport("Dubai",1000);
}

然后用strcmp查找你的机场。你不能用C语言。你为什么要这样做?@l3x:这有很好的应用程序。但这需要像Python这样的动态类型语言。将
name
字段更改为指针或数组。所有变量的名称在编译时都是固定的。之后,变量的名称不再存在(调试器的符号文件中除外)。但是您必须自己编写代码(而且使用起来比使用动态类型语言要不舒服得多)。