No.5
- 回答日時:
正確なチェックではないですが、他の変数とアドレスを比較してみれば何となく分かると思います。
#include <stdio.h>
#include <stdlib.h>
#define TANAKA "田中"
#define SINTYO 180
char *s1 = "邦衛";
char *s2 = TANAKA;
int i1 = 123;
int i2 = SINTYO;
void main(void)
{
char *s3 = "邦衛";
char *s4 = TANAKA;
char *s5;
int i3 = 123;
int i4 = SINTYO;
s5 = (char *)malloc(1);
printf("pg:%p\n",main);
printf("s1:%p\n",s1);
printf("s2:%p\n",s2);
printf("s3:%p\n",s3);
printf("s4:%p\n",s4);
printf("s5:%p\n",s5);
printf("i1:%p\n",&i1);
printf("i2:%p\n",&i2);
printf("i3:%p\n",&i3);
printf("i4:%p\n",&i4);
}
うちの環境での実行結果
pg:0040123C
s1:004180B4
s2:004180B9
s3:004180BE
s4:004180C3
s5:00912F50
i1:004180AC
i2:004180B0
i3:0012FF84
i4:0012FF80
pg:プログラム
i1,i2,s1-s4:静的
s5:動的
i3,i4:スタック
プログラムと静的の境界は判断できないかも。
i3,i4のアドレスが逆転しているのはスタックの特徴?
正確ではないですが、参考程度にはなるかと。
No.4
- 回答日時:
> もしよければ具体的にどうやって調べればよいか教えていただけますでしょうか?助かります。
まずは、使用されている処理系が何であるかを確認してください。そして、アセンブリ言語のソースを出力させる方法(多くの場合はコンパイルオプション)をマニュアルで調べてみてください。
No.3
- 回答日時:
既に回答が出ているように、#define指令で定義したマクロは前処理で置換されます。
マクロが使用された場合には"田中"という文字列がメモリ上に配置されることになります。
C言語の規格上は、マクロが使用された文脈により、静的記憶域期間または自動記憶域期間(自動配列の初期化子として使用された場合)になります。sizeof演算子のオペランドに使用された場合はメモリ上には配置されません。
規格上の話ではなく、実際にどうなるかに関しては、処理系に強く依存しますし、最適化結果にも依存しますので、コンパイル結果を調べてください。
No.2ベストアンサー
- 回答日時:
★関連付けられている訳ではありません。
・『#define』の『TANAKA』はコンパイルする前の段階で『"田中"』という
文字列定数に置き換えられます。つまり、プリプロセッサ処理されるの
です。『プリ』とは『前処理』って意味です。
・よって、文字列定数と同じ『静的記憶領域』に格納されます。
・分かりますか?
・文字列の記号定数は『文字列定数』と同じため『静的記憶領域』に格納。
・整数値の記号定数は『プログラム領域』と同じコード部に格納されます。
・以上。おわり。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- 日本語 「に」について 9 2022/10/25 16:32
- 大学・短大 アナロジーにおけるベース領域とターゲット領域とはなんですか?先生の説明によるとりんごが赤いということ 2 2022/06/17 16:02
- C言語・C++・C# あまりわかりません。 複素数$c$を具体的に定めた複素写像写像$f_c(z)$に対して、原点を含む領 4 2022/10/25 09:17
- 物理学 示すように,真空中の直交座標系を考える。y平面に平行な つ領域Iと領域Iがあり,軸上の領域Iと領域I 1 2023/06/25 14:46
- 戦争・テロ・デモ 日本防衛省の防衛力強化と日本正規軍隊の転換に対する質問です。 2 2022/12/20 21:34
- 地理学 領海と排他的経済水域の違いについて。 上記2点の具体的な違いはなんでしょうか。 範囲が違うのは既に知 3 2023/01/20 19:24
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- CPU・メモリ・マザーボード ストリーミングの一時処理用の領域について 1 2023/04/11 21:55
- その他(ブラウザ) bingチャットの内容(縦長)をスクリーンショットで保存する方法 3 2023/02/28 02:13
このQ&Aを見た人はこんなQ&Aも見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
組み込みソフト。ROM領域にデータ
C言語・C++・C#
-
C言語初心者の質問失礼します。
C言語・C++・C#
-
#defineの定数を文字列として読み込む
C言語・C++・C#
-
-
4
C言語での引数の省略方法
C言語・C++・C#
-
5
Excel 16進数
Excel(エクセル)
-
6
IG、ACC、+B、ILL
国産バイク
-
7
2重定義って??
C言語・C++・C#
-
8
define で 配列
C言語・C++・C#
-
9
マイコン メモリ使用量の節約方法
ソフトウェア
-
10
switch の範囲指定
C言語・C++・C#
-
11
unsigned char配列への入力の仕方
C言語・C++・C#
-
12
C言語で、メモリを解放しないで終わるプログラム
C言語・C++・C#
-
13
char str[256]の256の意味は?
C言語・C++・C#
-
14
C言語のポインタに直接アドレスを割り振りしたい
C言語・C++・C#
-
15
txtファイルから特定の文字列が書かれた行だけを取得や削除するソフト
フリーソフト
-
16
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
17
配列の要素数に変数を入れたいときには
C言語・C++・C#
-
18
C++ 構造体の一括初期化 {0}
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
【C言語】全角文字の配列を、全...
-
プログラミングの授業の課題です
-
C言語のプログラムで、途中で止...
-
C言語でファイルから複素数の値...
-
終了条件Ctrl+zについて,結果表...
-
空白を含んだ文字列がうまく格...
-
printf による16進表示について
-
警告 W8075 問題のあるポインタ...
-
VC++でSQLへSELECT文を送ったの...
-
C言語でのCSVファイルの読み出...
-
へんな現象
-
#define _CRT_SECURE_NO_WARNIN...
-
マイナスからプラスへ転じた時...
-
*をユーザーが入力した数字の数...
-
2÷3などの余りについて
-
10個出力で改行したいのですが...
-
C言語での奇数の和
-
複数桁10進数の*桁目だけを抽出...
-
正負を反転させて出力するプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
C言語で複数列のデータを1列の...
-
#defineが使用するメモリ領域に...
-
printf による16進表示について
-
空白を含んだ文字列がうまく格...
-
C言語のプログラムで、途中で止...
-
プログラミングの授業の課題です
-
char型2つを結合し、short型に...
-
C言語でのCSVファイルの読み出...
-
矢印キーを押下してコンソール...
-
【C言語】全角文字の配列を、全...
-
エラーについて質問です。
-
リストの作成と出力(C言語)
-
バイナリファイル(画像)のよみ...
-
[C]セグメンテーションエラー:...
-
WinInetのInternetOpenUrl関数...
-
c言語で文書を読み込み、単語の...
-
VC++でSQLへSELECT文を送ったの...
-
受信データから必要な部分のみ...
-
reallocでエラー
おすすめ情報