可能重复:
可以在其范围之外访问局部变量的内存吗?
#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 或任何我喜欢的 const ,它工作得很好,但如果我在 *b+i 这样的循环中用 int 替换 const 则它不起作用!
PS这不是硬件!!我“是”一个长期的程序员,忘记了这一切让我感到羞耻。
有任何想法吗?