請問下面的程序的兩次輸出結果為什麼都是"abc"呢,不是說get()中的a是分配在棧上的嗎
那麼調用一次set()之後應該顯示"123"或者其他字符串才對吧?
#include <iostream>
using namespace std;
char* get()
{
char a[]="abc";
return a;
}
void set()
{
char b[]="123";
}
void main()
{
char* p=get();
cout<<p<<endl;
set();
cout<<p<<endl;
}
a確實是在棧上的,但是“abc”是在常量區的。還有set並沒有對p做什麼操作,p怎麼會改變呢。