-4

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

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

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

最好有一些结构

myObject { CHAR : INT}
4

3 回答 3

1
struct myObj
{
 char* string;
 int num;
};

这是最基本的。如果你想使用它,你应该学习 c。

于 2012-10-04T13:39:12.250 回答
1

你需要的是一个关联数组。例如,您可以使用 lighttpd 项目 array.c array.h中的 一个

您需要的是 data_integer 结构。这样的辅助数组有点像 javascript 对象,“键”是字段名称,值是字段的数据。

由于 JS 对象基本上是字段名称与其值之间的美化字典(映射),带有一些语法糖 - 这就是您所需要的。

于 2012-10-04T13:47:38.833 回答
1

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");
于 2012-10-04T14:00:08.723 回答