Java中的C指针等价
我想知道这段C代码的Java翻译是什么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(); 我可能错了 这句话怎么说?(*婚姻)。男=父工
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