CԳ JavaC++Pythonֵݻô-켫

CԳ JavaC++Pythonֵݻô

ʱ䣺2021-01-04 07:20:04 ߣ MM

Ͽܶ JavaC++Python ֵݻô£һƪؾԭ׹ںݵļʽ

Ǵֵ(pass by value)(pass by reference)˵Ǵָ롣

ֵǴÿ JavaPython гһЩѧߣ C/C++Ļ so easy

Ҿʹ C Գһ԰ JavaPython Щҽס

ѽҪ볹׸㶮Ҫ˽֪ʶ

ѡջ

ջ

ѡջ

Ҫע⣬⡰ѡ͡ջݽṹϵĶ(Heapһɿȫ) ջ(StackȽԽṹ)

˵Ķջָڴ֯ʽָ̬ڴһһɳԱֶ䣬 Java е newC/C++ е malloc ȣǽĶڴڶ

 ջɱԶͷ(žһͷһӦСڴ)ڴźIJֲֵȡ

Java ˵ɣ(intdoublelong )ֱӽ洢ջϵģ()ֵ洢ڶϣջֻ洢һԶá

ٸӣ

int age = 22; Stringname = newString( "shuaibei");

洢ͼ£

Ƿֱ agename ֵᷢʲôأ

age= 18; name= new String( "xiaobei");

ͼ

age ǽջϵֵ޸Ϊ 18 name  String ͣԻ´һ String 󣬲޸ nameָµĶѶ(ϸĵĻ֣ᷢͼ name ִеĵַ޸)

Ȼ֮ǰǸûõĻͻᱻյ

ҲҪעһ㣬Ҵ String ʱʹõ new ֱӲֵַ磺

Stringname = "shuaibei"

ô ŵ JVM ijȥᱻյִַ𣬲Dzע

Java ⶫ C/C++ ָһģһֻ Java װһЩƣһãʵϾָ롣

ãҼ˽ºջ

ջ

һҪڴϴ洢ЩϢأ

ֲ͹ˣǵ໥õʱ򣬾ͻҪ֤˳ķغͻָջṹϢ

ⲿ־Ͱ صַebp Ĵ(ַָĴָǰջײ) ԼҪļĴ

һĺջųӣ

ǣõʱأ

˵ǵ޺ջ

죬Dzȥϸ˽⺯ù ebpebp α仯صַõġ

ǸײݣĶǷߵ֪ʶԼɡ

˳⻰

ѧϰ֪ʶʱҪٸʵףʱȴҪʱͷǼҪһֱٸ⣬ܸᴿȥʧȥѧϰ塣

õķʽǣһǡôĵطһ㣬ϿṩĹ/ӿڣȥ̽һʲôôʵֵġ

磬ѧϰ HTTPҾֻҪ TCP ṩȶɿ͹ˣʱͲҪȥ TCP ġ

ˣ˵غΣٸӣδmain ڵ func_a 

intfunc_a( inta, int*b) { a = 5; *b = 5; };

intmain( void) { inta = 10; intb = 10; func_a(a, &b);printf( "a=%d, b=%dn", a, b); return0; }

// a= 10, b= 5

ôfunc_a(a, &b) ̣ںջϾôأ

ͼʾһκô롣

 main ڱ a ֵ func_a  a λá

 b ĵַ func_a  b λá

סͼǺݵıʣûʽjust copy!

copy ζǸҲ ӺIJԶڵĸ

ֵݻνôݣ copy ĵһֵһ(ֵ)

ʵҲֵ......ҪþĶ

Իһ˵DzνôݵģһдõıʻǴֵ

Ҳpass pointer by value pass reference by valueе˼

죬Dz۵ûдһ߼߼ǵ⡣ҵĿأǰѲ̸£ڵǴֵǴãǾͿô˼ˡ

pass by value in java

ٸ򵥵˵£

publicclassHelloWorld{ publicstaticvoidChangeRef( String name) { name = newString( "xiaobei"); }

publicstaticvoidmain( String[] args) { String name = newString( "shuaibei"); ChangeRef(name);System. out.println(name. equals( "shuaibei"));

}}

棬ChangeRef ʵϲûиı䵽 main ڵ name 󣬿ͼˣ

ǰʵʾǸջϵֵ name ֵһַ ChangeRef յҲ⴮ַ  ChangeRef ڽ name ָijһµ String 󣬵ﲻ main е name κεӰ졣

ף˵ͶôΪʲôӰأ

ǶõָıˣӰɶ ͨô޸ⲿֵһDzóԱ

 String һ changeStr(String value)ôǾͿ ChangeRef ڵ޸ name ֵһͬ޸ĵ main ֵ

Python

ʵJava ͦģ Python иص бֻһãϢǺͶ洢һġͲٹչ

ϣϣܰﵽҡ

Ƽ

CԳ JavaC++Pythonֵݻô