1

私の質問は、デバッガーに配列内の要素を表すように依頼したとき、数字は何を表しているのでしょうか? 私はそれがASCII、または5のバイナリ表現ではないことを知っています.それは特定のint 5のメモリ位置ですか?

Breakpoint 1, main () at ArrnLoops.c:5

5     int  num[] = {5,15,25,45};

(gdb) display i
1: i = 2981876
(gdb) display num

2: num = {1466917, 1176192, 0, 134513753}
4

4 に答える 4

4

内容を示しています。5 行目で中断した場合、5 行目はまだ実行されていないため、初期化は行われていないことに注意してください。それらのメモリ位置に現在あるランダムな値が表示されます。

于 2013-10-19T03:36:28.713 に答える
2

の意味がわかりませんint 5。どこ5から来たの?

表示されているのは、配列の現在の内容だけだと思いますnum

の定義で実行が停止しました。 のnumメモリはnum既に存在しますが、初期化はまだ実行されていません。したがって、表示されるのは のガベージ値ですnum

次の行に移動してnum再度表示すると、 が表示されます{5,15,25,45}

同じことがおそらく にも当てはまりますがi、投稿したものから がどこiで定義されているかを確認することはできません。

于 2013-10-19T03:36:09.220 に答える
1

それらは記憶場所ではありません。それらはガベージ値と呼ばれます。配列要素が明示的に割り当てられない限り、ガベージ値が含まれます。

于 2013-10-19T03:36:58.467 に答える
1
Breakpoint 1, main () at ArrnLoops.c:5

5     int  num[] = {5,15,25,45};

行頭の5は行番号です。tepsまたは go next を実行すると、そのコマンドの行番号が表示されます。

displayコマンドでは、はn:単なる結果追跡番号です。他の式で直接使用する方法を理解できていませんが、代わりにprint( p) を使用すると、次のようになります。

(gdb) p i
$1 = 2981876

次に、結果を他の式で使用できます。

(gdb) p $1 / 100
$2 = 29818
于 2013-10-19T03:51:45.150 に答える