在 JavaScript 中,我通常会这样做..
var myObject = { "Name" : "Liam", "Address" : "UK"};
我如何在 C 中制作类似的东西?
最好有一些结构
myObject { CHAR : INT}
在 JavaScript 中,我通常会这样做..
var myObject = { "Name" : "Liam", "Address" : "UK"};
我如何在 C 中制作类似的东西?
最好有一些结构
myObject { CHAR : INT}
struct myObj
{
char* string;
int num;
};
这是最基本的。如果你想使用它,你应该学习 c。
你需要的是一个关联数组。例如,您可以使用 lighttpd 项目 array.c array.h中的 一个
您需要的是 data_integer 结构。这样的辅助数组有点像 javascript 对象,“键”是字段名称,值是字段的数据。
由于 JS 对象基本上是字段名称与其值之间的美化字典(映射),带有一些语法糖 - 这就是您所需要的。
C与 JavaScript非常不同,尤其是在字符串和内存管理方面。根据您想要做什么,C 等效项可能会变得非常麻烦。
如果你知道你的字符串成员的最大长度,你可以这样做
struct obj {
char name[LENGTH];
int num;
};
struct obj myObj;
...
strcpy(obj.name, "Some Name");
obj.num = 1;
C 本身没有字符串数据类型;字符串表示为char
以 0 结尾的值序列,并存储为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");