C言語プログラミングについて
int ex = 0;
void func(void)
{
static int sx = 0;
int ax = 0;
printf("ax=%d, sx=%d, ex=%d\n", ax++, sx++, ex++);
}
int main(void)
{
int i;
for (i = 0; i < 5; i++)
func();
return 0;
}
このプログラムはexとsxは1~4まで表示されますがaxは数字が変化せずに0のまま繰り返されます。なぜでしょうか?
静的
と
自動変数というものが関わっているのですが、、
どういうものなのか?簡単に説明お願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
c言語に限らず、どんな言語で書いたプログラムでも、動作にメモリが必要です。
WindowsやLinuxなどのいわゆる普通のOSでは、プログラムの実行を開始する時にメモリを確保します。
各変数は、その確保したメモリの中に配置されます。
c言語では
関数の中で宣言された変数は関数実行時、メモリ内に配置され、関数を終了すると、配置したことを忘れ去ります。
一方、staticと宣言した変数は、確保したメモリ上のある決まった場所に、プログラムが終了するまで配置され続けます。
ですので、関数を終了してもsxが値を保持するのは理解できると思いますが、
なぜsx=0が効かないという仕様なのか。その背景や思想を唱えられるほどc言語を愛しておりませんので、そこはどうかご勘弁を。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# プログラミングの授業のペーパーテスト 実行結果を答えろ #include int x[ ] = {1 3 2022/06/16 20:08
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
【C言語】再帰が時間がかかる...
-
マインスイーパ、自動解析プロ...
-
sil_rew_memのメモリアクセスに...
-
大容量のメモリ確保をスワップ...
-
C言語で、メモリを解放しないで...
-
ターボDelphi 独自カーソルの設定
-
メモリ不足
-
メモリのセグメント違反の解決...
-
メモリの解放の仕方
-
メモリの増加に関して
-
ファミコンって8ビットしかない...
-
エクセルのメモリ使用状況/Appl...
-
「memcpy」と「strcpy」について
-
VBAで2進数を返すプログラムの...
-
CImage::ReleaseDC()のエラーで...
-
C,C++プログラムの強制終了時の...
-
ExitProcessの関数コールについ...
-
GPUプログラミング時の表示用GPU
-
スーパーマリオのパワーアップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
VBAの配列サイズとメモリに関して
-
「ヒープサイズの設定」て何?
-
C言語における再帰呼び出しの...
-
エクセルVBA 大容量CSVファイル...
-
動的メモリとexit(C言語)
-
エクセルのメモリ使用状況/Appl...
-
メモリが不足しています(VBA)
-
ファイルマッピング関数で失敗
-
大容量のメモリ確保をスワップ...
-
メモリのセグメント違反の解決...
-
EXCEL-VBAにてADOのレコードセ...
-
メモリ不足
-
エクセル キャッシュメモリー...
-
【C言語】再帰が時間がかかる...
-
C#のOutOfMemoryException発生...
-
closeとメモリの開放について
-
バッチファイルでの実行EXEのメ...
-
メモリの解放について VB6 VBA
-
「memcpy」と「strcpy」について
おすすめ情報