可能重複:
Can a local variable’s memory be accessed outside its scope?值指針是垃圾返回時
#include <iostream>
#include <string>
using namespace std;
char* reverse(char* input)
{
char b[11];
for (int i=0; i<11; i++) {b[10-i]=input[i];}
for (int u=0; u<11; u++) {cout<<b[u];}
cout<<endl;
return &b[0];
}
int main()
{
char ali[]="ali is good";
char *a=&ali[0];
char *b=reverse(a);
for (int i=0; i<11; b++, i++)
{
cout<<*b+i<<endl;
}
cout<<endl;
system("pause");
return 0;
}
這是一個簡單的程序,以扭轉一個字符串,它工作得很好,當你打印出結果該函數,但是當將字符串的指針傳遞給Main然後打印它時,它會打印出類似垃圾的東西。
爲什麼這很奇怪?因爲如果我打印* b + 2或* b + 5或任何常量我喜歡,它運作良好,但如果我用* b +我循環中的int替換爲const,然後它不起作用!
P.S.這不是硬件!我「是」一位長期的程序員,因爲忘記了這一切而感到羞恥。
任何想法?
您正在返回一個指向局部變量的指針。函數返回後不再存在。 –
http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope/6445794#6445794 –
謝謝先生,我已經解決了它,因爲Mihail Burduja指出下面。 – ali8