代码如下:
#include<iostream>
#include<cstring>
using namespace std;
char* getname(void);
int main() {
char* name;
name = getname();
cout << "A: " << (int*)name << endl;
name = getname();
cout << "B: " << (int*)name << endl;
return 0;
}
char* getname(){
char temp[80];
cout << "Enter your name: ";
cin >> temp;
char* pn = temp;
return pn;
}
运行结果:

然而书上说“temp数组仅当getname()活动时存在。在程序控制权回到main()时,temp使用的内存自动释放。”那么按理说两次调用getname(),伴随着两次回到main(),这时两个地址不同才对呀,这是咋回事累

#include<iostream>
#include<cstring>
using namespace std;
char* getname(void);
int main() {
char* name;
name = getname();
cout << "A: " << (int*)name << endl;
name = getname();
cout << "B: " << (int*)name << endl;
return 0;
}
char* getname(){
char temp[80];
cout << "Enter your name: ";
cin >> temp;
char* pn = temp;
return pn;
}
运行结果:

然而书上说“temp数组仅当getname()活动时存在。在程序控制权回到main()时,temp使用的内存自动释放。”那么按理说两次调用getname(),伴随着两次回到main(),这时两个地址不同才对呀,这是咋回事累

