C言語では一度宣言した変数(例えばint型)を後で破棄することはできないのでしょうか。(pythonで言うdel文のような感じ)
自分で調べた範囲では, できる・できないどちらの記述も見つけられませんでした。ググっても配列のmalloc, freeの話くらいしかヒットしません。(調べ方が悪いんだと思いますが...。)
どなたかよろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/05/23 10:49
回答5件
0
Shadowing使うくらいならば処理を別の関数へ追い出してしまった方がいいです。
そもそも、「型がわからなくなる、修正するのが面倒くさい」のは関数が長すぎます。
C言語の場合、記述が冗長になりやすいので少し長いですが
1画面から2画面、行数にして40~80行程度に収めたいところです。
120行・160行を超える大作になると一週間後に読むときにツラいです。
投稿2021/05/29 23:57
総合スコア15149
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
明示的に"変数を破棄する"方法はないはずです。ブロックは変数の寿命を制限することであって、任意の時点で破棄するわけではありませんし。
「"変数を破棄する"ことで何をやりたいのか」を明らかにすればよりよい(不自然でない)方法が見つかったりしそうにも思います。
「メモリが勿体ない」が理由じゃないですよね? RAM128byteのマイコンだったりするとそういうのは切実ですけれど、ブロックで切り分けたとしても新しい変数を前の変数と同じ場所に割り当てる保証はないです(そうなることもある)。
C
1int main() { 2 { 3 int a=100; 4 int* p=&a; 5 printf("%p\n",&p); 6 } 7 { 8 char* p="abc"; 9 printf("%p\n",&p); 10 } 11 return 0; 12}
では、Microsoft C(Visual Studio2019)では
Text
100A4FBD0 200A4FBCC
gcc(9.3.0)では
Text
10x7ffc67488bd0 20x7ffc67488bd0
となりました。
投稿2021/05/23 11:17
総合スコア7703
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/05/27 17:14
2021/05/27 23:08
2021/05/27 23:32
退会済みユーザー
2021/05/28 01:23
退会済みユーザー
2021/05/28 01:26
退会済みユーザー
2021/05/28 16:55
2021/05/28 22:07
2021/05/28 22:08
2021/05/29 03:05
退会済みユーザー
2021/05/29 08:08
2021/05/29 22:50
2021/05/29 23:03
退会済みユーザー
2021/05/30 03:33 編集
0
C言語の変数の記憶期間は、2通りしかありません。
- 静的変数・外部変数…プログラムの起動から終了まで存在し続ける
- 自動変数…ブロック内で宣言されて、そのブロックを抜けるまで存在する
この2つ以外のタイミングで解放したい場合は、「malloc, free」を使うしかありません。
投稿2021/05/23 11:03
総合スコア146018
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
変数名はブロックの中でのみ有効です。ブロックの途中で無効化することはできません。途中で無効化したいならば、入れ子ブロックを作り、その中で変数宣言すれば子ブロック内のみで有効となります。
投稿2021/05/23 08:20
総合スコア4830
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/23 08:26
2021/05/23 08:28
退会済みユーザー
2021/05/23 10:51
0
ベストアンサー
投稿2021/05/23 05:52
編集2021/05/23 06:16総合スコア28669
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。