在JavaScript中,我通常会这样做..
var myObject = { "Name" : "Liam", "Address" : "UK"};
我如何在C中制作类似的东西?
最好是某种结构
myObject { CHAR : INT}
答案 0 :(得分:1)
struct myObj
{
char* string;
int num;
};
这是最基本的。如果你想使用它,你应该学习c。
答案 1 :(得分:1)
你需要的是一个关联数组。例如,您可以使用lighttpd项目中的一个 array.c array.h
您需要的是data_integer结构。 这样的辅助数组有点像javascript对象,“key”是字段名称,而value是字段的数据。
由于JS对象基本上是字段名称之间的字典(映射),它具有一些语法糖 - 所有这些都是你需要的。
答案 2 :(得分:1)
C 非常与JavaScript不同,特别是在字符串和内存管理方面。根据你想要做的事情,C等价物会变得非常麻烦。
如果您知道字符串成员的最大长度,则可以
struct obj {
char name[LENGTH];
int num;
};
struct obj myObj;
...
strcpy(obj.name, "Some Name");
obj.num = 1;
C没有字符串数据类型;字符串表示为以{0}结尾的char
值的序列,并存储为char
的数组。赋值运算符=
未针对数组类型定义,因此您必须使用strcpy
等库函数来分配上述字符串值。
如果你不知道你的字符串成员的最大长度,你会做类似的事情
struct obj {
char *name;
int num;
};
struct obj myObj;
myObj.name = malloc(length_of_string);
if (myObj.name)
{
strcpy(myObj.name, "Some Name");
}
myObj.num = 1;
...
free(myObj.name);
在这种情况下,您必须使用myObj.name
库调用手动为malloc
分配内存,并且必须使用free
库调用取消分配它。
如果您想存储该类型的序列,您可以执行类似
的操作struct obj myObjArray[NUMBER_OF_OBJECTS];
将您的作业命名为
myObjArray[i].num = 1;
strcpy(myObjArray[i].name, "Some Name");