Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.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
Java中的C指针等价_Java_C_Pointers_Malloc - Fatal编程技术网

Java中的C指针等价

Java中的C指针等价,java,c,pointers,malloc,Java,C,Pointers,Malloc,我想知道这段C代码的Java翻译是什么 Person * father = malloc(sizeof(Person)); Marriage * marriage = malloc(sizeof(Marriage)); (* marriage).male = father; 我猜我用的是参考资料。因此,我没有让变量父指向Person,而是为类Person创建一个父对象,如下所示: Person father = new Person(); 我可能错了 这句话怎么说?(*婚姻)。男=父工

我想知道这段C代码的Java翻译是什么

 Person * father = malloc(sizeof(Person));
 Marriage * marriage = malloc(sizeof(Marriage));
 (* marriage).male = father;
我猜我用的是参考资料。因此,我没有让变量父指向Person,而是为类Person创建一个父对象,如下所示:

Person father = new Person();
我可能错了

这句话怎么说?(*婚姻)。男=父工作


我对C很陌生,我只是想更好地理解它是如何工作的。

那只不过是一场
婚姻在Java中

(*婚姻).male
相当于C中的
婚姻->male
婚姻
是指向内存位置的指针,类似于Java中对使用
新建
创建的对象的引用

另外,请注意,虽然在某种意义上,这些可以与Java构造相关联,但它们肯定不是“等价物”。C没有。Java被解释。C不是。有很多细微的差别,所以我永远不会说C中的任何东西在任何地方都等同于Java



与其通过将C等同于Java来学习C,不如读一本关于C的明确的书。有一些像“Java程序员的C”这样的文章对你来说可能是一个更好的入口。然而,根本不要把Java和C等同起来,那只会导致糟糕的结果。

那只不过是一场
婚姻在Java中

(*婚姻).male
相当于C中的
婚姻->male
婚姻
是指向内存位置的指针,类似于Java中对使用
新建
创建的对象的引用

另外,请注意,虽然在某种意义上,这些可以与Java构造相关联,但它们肯定不是“等价物”。C没有。Java被解释。C不是。有很多细微的差别,所以我永远不会说C中的任何东西在任何地方都等同于Java



与其通过将C等同于Java来学习C,不如读一本关于C的明确的书。有一些像“Java程序员的C”这样的文章对你来说可能是一个更好的入口。但是,根本不要将Java与C等同起来,这只会导致糟糕的结果。

我们不能使用Java中的指针,但是,我们可以将C中的代码转换为Java:

    Person father = new Person();
    Marriage marriage = new Marriage();
    marriage.male = father;

(*婚姻)。男性=父亲;正如卡达尼卢克所说,婚姻->男性=父亲是一样的。此运算符(*pointer)获取指针的值,在这种情况下,它是一个对象。如果您想更好地理解C中的指针,请阅读本文:

我们不能使用Java中的指针,但是,我们可以将C中的代码转换为Java:

    Person father = new Person();
    Marriage marriage = new Marriage();
    marriage.male = father;

(*婚姻)。男性=父亲;正如卡达尼卢克所说,婚姻->男性=父亲是一样的。此运算符(*pointer)获取指针的值,在这种情况下,它是一个对象。如果您想更好地理解C中的指针,请阅读本文:

C是一种结构化但不是面向对象的语言。基本上有两种机制来实现类似对象的东西:一边是称为结构的数据结构,另一边是指针。指针类似于变量,但用于引用给定字段的内存地址

struct Person {
    char name[50];
};

struct Marriage {
    struct Person *father; /* fields of type 'pointer to a struct person' */
    struct Person *mother; 
} marriage;

int main() {
    struct Person father = {"Steve"};
    marriage.father = &father; /* marriage.father references the memory address of father */
    ...
}
相反,Java是一种面向对象的语言,例如,一个对象A引用另一个对象B,而不需要特殊的指针类型,因为这些“指向”是隐式的。 因此,您的Java代码示例是:

Person father = new Person(); // acts like struct Person
Marriage marriage = new Marriage(); // acts like struct Marriage
marriage.male = father; // marriage.male references ("points to") father memory address

C是一种结构化但不是面向对象的语言。基本上有两种机制来实现类似对象的东西:一边是称为结构的数据结构,另一边是指针。指针类似于变量,但用于引用给定字段的内存地址

struct Person {
    char name[50];
};

struct Marriage {
    struct Person *father; /* fields of type 'pointer to a struct person' */
    struct Person *mother; 
} marriage;

int main() {
    struct Person father = {"Steve"};
    marriage.father = &father; /* marriage.father references the memory address of father */
    ...
}
相反,Java是一种面向对象的语言,例如,一个对象A引用另一个对象B,而不需要特殊的指针类型,因为这些“指向”是隐式的。 因此,您的Java代码示例是:

Person father = new Person(); // acts like struct Person
Marriage marriage = new Marriage(); // acts like struct Marriage
marriage.male = father; // marriage.male references ("points to") father memory address