- ベストアンサー
警告 ”値が割り当てられていないローカルな変数~”について
以下のコード1では、”値が割り当てられていないローカルな変数 'key' に対して参照が行われました。”という警告が出ますが、コード2では出ません。 コード2でも値が割り当てられていないと思うのですが、どうして警告が出ないのでしょうか? お分かりの方、お教えくだい。 あと、かなり省略してしまったので、意味の無いコードになってしまいましたが、この2つのコードでkeyの意味合いはどう違うのでしょうか? よろしくお願いいたします。 <コード1> int in_dt() { int *key; scanf( "%d", key );///ここで警告が出る return 1; } int main( void ) { int code; code = in_dt( ); return 0; } <コード2> int in_dt( int *key) { scanf( "%d", key ); return 1; } int main( void ) { int code,key; code = in_dt( &key); return 0; }
お礼
回答ありがとう御座います。 大変良く判りました。 これまでの理解は、80%にとどまっており、今回残りの20%が判ったという感じです。 ところで、省略してしまったのでコードの中にはありませんが、code = in_dt( &key);のあとで 変数keyを用いた処理を行います。 この時、コード2は期待通り動きますが、コード1は動きません。 (引数でkeyを渡しているかいないかの差) 自分でも大体判っているつもりですが、何となく漠然としており、少し詳しく教えていただけたらうれしいのですが。