ホーム » スタッフ » 斉藤徹 » 講義録 » 情報構造論 » 局所変数配列をreturn

2018年8月
« 7月    
 1234
567891011
12131415161718
19202122232425
262728293031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

局所変数配列をreturn

情報構造論の前期期末試験で、局所変数返しの解答が多かったので、メモ。

JavaScript でプログラムを書いていると、動くネタだけど、C言語では初心者がよく間違って書いてしまう定番であり、それなりに動いたりするから、誤解が増えてしまう可能性もある。

char* foo() {
   char str[ 20 ] ;
   strcpy( str , "Hello World" ) ;
   return str ;
}
char* bar() {
   char baz[ 20 ] ;
   memset( baz , 'A' , sizeof( baz ) ) ;
   return NULL ;
}
void main() {
   char* ans = foo() ;
   printf( "%s¥n" , ans ) ; // Hello World
   // 一見正しく動いているように思うかも。

   bar() ; // 局所変数を触るだけの処理
   printf( "%s¥n" , ans ) ; // AAAAAAAAAAA
   // ans の中身が壊れている。
}