【发布时间】:2022-06-29 12:37:08
【问题描述】:
我有一组动物名称,按照我打算创建每个结构“动物”的顺序,并将其存储在farm_animals,一个动物结构中。
typedef struct ani animal;
animal* farm_animals[128] = {0};
尽管下面的代码完全无效,但我将其包含在此处以准确显示我在实践中的想法。我想声明一个与数组中的字符串文字相对应的动物类型变量,然后以某种方式将该文字用作动物的名称并将其存储在数组中。
char* animal_names [] = {\"Oliver\", \"Marcus\", \"Mike\", \"John\", \"Tom\", \"Daisy\", \"Lilac\", \"Rose\", \"Jim\"};
for (int i = 0; i < 9; i++) {
animal animal_names[i];
farm_animals[i] = animal_names[i];
}
我研究并发现了许多其他类似的帖子,这些帖子得出的结论是,由于 C 是一种编译而非解释的语言,因此不可能用字符串的值命名变量。但是,我想知道是否可以将字符串名称与后缀(如索引号)连接起来以创建一个全新的“字符串名称”来引用动物。我也有一个使用数组或相同animal_names 数组的宏,但这对于我作为初学者来说还不清楚。
我认为 C 中的这种想法有些牵强,但我真的想知道是否有一种方法可以使用 for 循环和名称数组来命名这些结构,而不是手动创建 100 多个结构。
-
您需要某种地图数据结构 - 哈希表、树等,以便在运行时为事物命名。
-
\" 不能用字符串的值来命名变量\" 那是因为这没有意义在运行时值之后命名变量。变量名存在独自为了程序员的利益,它们不存在于编译的二进制文件中,也与程序的用户/输入无关。
-
我不敢想象。
标签: arrays c namespaces c-strings identifier