我正在学习堆栈的用法,我注意到它们在 C 和 Java 中的使用方式不同,或者显然是不同的。例如,下面用 C 编写的代码将不起作用,因为它会破坏“name”
char* getName(){
char name[32];
scanf( "%s",name);
return name;
}
int main (int argc, char *argv[]){
char *myName = getName();
printf("%s", myName);
}
但是,如果我用 Java 编写类似的东西,它就可以正常工作:
public static String getName(){
String name = "A name";
return name ;
}
static void main(String[] args){
String name = getName();
System.out.print(name);
}
我想知道为什么。为什么堆栈在 Java 中不会破坏,但在 C 中却会破坏?
最佳答案
在Java中,局部变量的内存不是在堆栈上分配的...只有引用放在堆栈上。对象本身被放入堆中。
关于java - C 中的堆栈使用与 Java 中的堆栈使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59276896/