Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c中类似json的对象_C_Object - Fatal编程技术网

c中类似json的对象

c中类似json的对象,c,object,C,Object,我有javascript和php方面的背景,但我目前正试图学习C语言,但我遇到了一点障碍,在这两种语言中都有对象 $obj = new stdClass(); || const obj = {}; 然而,我一直无法在C中找到simulair的东西,是没有这样的东西,还是我只是找错了地方 或者在C中有没有更好的方法来做类似的事情 好的,我想我从科迪·格雷那里得到了答案,但只是想让大家明白一点: 我想你可以做一些类似的事情: const person = { name: "Donald Duc

我有javascript和php方面的背景,但我目前正试图学习C语言,但我遇到了一点障碍,在这两种语言中都有对象

$obj = new stdClass(); || const obj = {};
然而,我一直无法在C中找到simulair的东西,是没有这样的东西,还是我只是找错了地方

或者在C中有没有更好的方法来做类似的事情

好的,我想我从科迪·格雷那里得到了答案,但只是想让大家明白一点:

我想你可以做一些类似的事情:

const person = {
  name: "Donald Duck",
  age: 82,
  location: "Duckburg",
};

console.log(person.name, person.age, person.location);
struct Person
{
    char name[100];
    int  age;
    char location[100];
};
在php中,您可以执行以下操作

$person = new stdClass();

$person->name = "Donald Duck";
$person->age = 82;
$person->location ="Duckburg";

echo $person->name . " " . $person->age . " " . $person->location
我的问题是,C中是否/如何做到这一点?C没有“对象”,因为它是一种过程编程语言,而不是面向对象的语言

但是,它确实有一种方法可以对相关数据进行分组,那就是通过一个结构(
struct
关键字)。这是一种用户定义的类型,您可能更了解它。它与其他语言中的“类”或“对象”并不完全相同,因为它没有任何关联的成员函数(至少,没有很多疯狂的技巧,这些技巧不是语言的一部分,当然也不是惯用的),但它仍然非常方便

语法类似于:

const person = {
  name: "Donald Duck",
  age: 82,
  location: "Duckburg",
};

console.log(person.name, person.age, person.location);
struct Person
{
    char name[100];
    int  age;
    char location[100];
};
然后,在代码中,您只需执行以下操作:

struct Person donaldDuck = { "Donald Duck", 82, "Duckburg" };


printf("Name: %s\nAge: %d\nLocation: %s\n",
       donaldDuck.name,
       donaldDuck.age,
       donaldDuck.location);
请注意,与许多其他语言一样,使用
操作符访问结构的字段

!

C没有“对象”,因为它是一种过程编程语言,而不是面向对象的语言

但是,它确实有一种方法可以对相关数据进行分组,那就是通过一个结构(
struct
关键字)。这是一种用户定义的类型,您可能更了解它。它与其他语言中的“类”或“对象”并不完全相同,因为它没有任何关联的成员函数(至少,没有很多疯狂的技巧,这些技巧不是语言的一部分,当然也不是惯用的),但它仍然非常方便

语法类似于:

const person = {
  name: "Donald Duck",
  age: 82,
  location: "Duckburg",
};

console.log(person.name, person.age, person.location);
struct Person
{
    char name[100];
    int  age;
    char location[100];
};
然后,在代码中,您只需执行以下操作:

struct Person donaldDuck = { "Donald Duck", 82, "Duckburg" };


printf("Name: %s\nAge: %d\nLocation: %s\n",
       donaldDuck.name,
       donaldDuck.age,
       donaldDuck.location);
请注意,与许多其他语言一样,使用
操作符访问结构的字段


!

您使用的是
structs
。然而,C语言与其他两种语言完全不同。首先,它是静态类型的:所有变量和函数的类型必须在编译时就知道,完全。这也意味着您不能继续使用“对象”并用任意多个字段填充它,如在JS中:

var person = {};
person.name = "Donald Duck";
person.age  = 82;              // I'm sure that Donald is always depicted younger
person.localtion = "Duckburg"; // woo hoo
稍后,您可以决定
(或者更确切地说
鸭子
)也应该有一个尺寸:

person.size = 9001;
这在C语言中是不可能的,当您定义一个结构时,您将自己限制在结构中的字段,并且这些字段:

struct person {
    const char * name;
    int          age;
    const char * location;
};
然后,您可以开始创建实际人员:

struct person donald;

donald.name     = "Donald Duck";
donald.age      = 82;
donald.location = "Uncle Scrooge's Money Bin";
但是,如果您尝试添加
donald.size
,现在您将受到编译器的斥责

也就是说,C在很多层面上都是不同的,这将是一次疯狂的旅程。例如,您不能继续使用
“Donald”+“Duck”
“Donald”
。“鸭子”`。没有字符串连接运算符。你必须用手做事情,自己管理记忆,并记住很多事情


取决于您想使用语言的方式,您可能希望从C++开始,然后深入研究C仍然逗留的肚子。因为C没有对象。C++做的。但是请记住,尽管大多数C程序都可以用C++编译,但它们有点不同的语言。

< p>使用<代码>结构> <代码>。然而,C语言与其他两种语言完全不同。首先,它是静态类型的:所有变量和函数的类型必须在编译时就知道,完全。这也意味着您不能继续使用“对象”并用任意多个字段填充它,如在JS中:

var person = {};
person.name = "Donald Duck";
person.age  = 82;              // I'm sure that Donald is always depicted younger
person.localtion = "Duckburg"; // woo hoo
稍后,您可以决定
(或者更确切地说
鸭子
)也应该有一个尺寸:

person.size = 9001;
这在C语言中是不可能的,当您定义一个结构时,您将自己限制在结构中的字段,并且这些字段:

struct person {
    const char * name;
    int          age;
    const char * location;
};
然后,您可以开始创建实际人员:

struct person donald;

donald.name     = "Donald Duck";
donald.age      = 82;
donald.location = "Uncle Scrooge's Money Bin";
但是,如果您尝试添加
donald.size
,现在您将受到编译器的斥责

也就是说,C在很多层面上都是不同的,这将是一次疯狂的旅程。例如,您不能继续使用
“Donald”+“Duck”
“Donald”
。“鸭子”`。没有字符串连接运算符。你必须用手做事情,自己管理记忆,并记住很多事情


取决于您想使用语言的方式,您可能希望从C++开始,然后深入研究C仍然逗留的肚子。因为C没有对象。C++做的。但是请记住,虽然大多数C程序可以用C++编译,但它们有点不同的语言。

< P>网络上有大量的C库。 例如,看看

web上有过多的C库。 例如,看看

“像这样的东西”比如说什么?C没有“对象”,它不是一种面向对象的语言。相反,它是一种过程编程语言。(虽然可以使用
struct
s模拟对象,但它并不是专门为此设计的,您应该先熟悉C范例。)在C中读取类似json的对象意味着动态构建对象,实际上javascript也会这样做,但在javascript中您不会“看到”它。对于“动态构造”,我的意思是你有一个基本的数据结构,用来构造表示json元素的组件。“像这样的东西”比如什么?C没有“对象”,它不是对象-