2016-03-21 121 views
-2

所以现在即时制作一个程序,涉及创建以机场目的地命名的众多结构,但我遇到了一个问题,我似乎找不到解决方案。我如何使用变量而不是字符串本身给出我的结构的名称?如:如何将变量设置为结构体的名称?

struct airport { 
    char name; 
    int capacity; 
} 

int main(void) 
{ 
    id = "dubai"; 
    struct airport id; 
} 

,我想,要创建结构:

struct airport dubai; 
+1

你不能这样做在C.为什么你想要做呢? –

+2

@ l3x:这有很好的应用。但是那需要像Python这样的动态类型语言。 – Olaf

+0

将您的'name'字段更改为指针或数组。 –

回答

0

作为一个模块的例子:

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找到你的机场。

0

由于ID是一个变量成员,并试图声明一个变量作为一个变量。在任何编程语言中,你都不能两次声明同一个变量。
为什么你想要做到这一点,究竟需要什么?可能我们可以解决问题,如果我们确定了你在这里执行的逻辑。

查看在编译时在内存中声明的变量,变量中的值来自运行时。如果你这样做,你不能因为duabi将在运行时分配,而s 结构变量将在编译时声明。