重複の可能性:
ローカル変数のメモリにそのスコープ外でアクセスできますか?
#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 のようなループで const を int に置き換えるとうまくいきません!!
PS これはハードウェアではありません!! 私は長年のプログラマーでした。これらすべてを忘れてしまったことを恥じます。
何か案は?