Javascript对象,在C中制作类似

时间:2012-10-04 13:36:55

标签: javascript c object char int

在JavaScript中,我通常会这样做..

var myObject = { "Name" : "Liam", "Address" : "UK"};

我如何在C中制作类似的东西?

最好是某种结构

myObject { CHAR : INT}

3 个答案:

答案 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");