C言語なら俺に聞け(入門編)Part 95
■ このスレッドは過去ログ倉庫に格納されています
0005デフォルトの名無しさん
2012/01/14(土) 11:01:18.98int main() {
char* str1[10]; //定義しただけで初期化していない。つまり文字列は格納されていない。
func1( &str );
}
void func1( char* str ) {
char* inStr = "test";
inStr = anotherFunc() ;
str = inStr + 1 ;
return ;
}
質問なんだが。
なぜ、きちんとstrに文字データが格納されるんだろうか?
main 関数でstr のポインタ領域は確保されているが、その参照先の文字列領域は未確保。
func1にとんだ先では、自動変数inStr に文字列が格納されており、そのポインタを渡すことでstrの中身に具体的なポインタが入る。
func1内では、str のポインタの指し示す先は自動変数inStrと同じポインタであり、参照できて当然。
ところが、return すると、自動変数inStr の内容はスタックを戻すことにより開放されている。
return された後にmainにてstrを参照しても全く問題ないし、キチンと値が格納されている。
値が参照できるのは、たまたまナノか?
この操作は問題ない?
■ このスレッドは過去ログ倉庫に格納されています