トップページ > プログラム > 2015年03月15日 > J5ZoTwT2

書き込み順位&時間帯一覧

22 位/133 ID中時間01234567891011121314151617181920212223Total
書き込み数2000000000000000000000002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C言語なら俺に聞け(入門編)Part 127©2ch.net

書き込みレス一覧

C言語なら俺に聞け(入門編)Part 127©2ch.net
244 :デフォルトの名無しさん[sage]:2015/03/15(日) 00:23:09.46 ID:J5ZoTwT2
gcc の場合だけど、

subl $32, %esp
movw $25185, 25(%esp)
movb $99, 27(%esp)
leal 25(%esp), %eax
movl %eax, 28(%esp)

となっていて、本題とは関係のないけど "ab" をまとめて word で渡してるのな。

'a':97, 'b':98, 25185 == (98<<8) + 97

"leal .." と "movl ..." から推測して、for loop 内の printf() でポインタ(*p)
そのものの値(アドレス値)を見てみると、

for (p = a; p <= a+3; p++) {
printf("[%d] %hhd\n", *p, (int)p & 0x000000ff);
}

[97] 41
[98] 42
[99] 43
[44] 44

となっていて、>>236 の「コードからchar型ポインタの一部の可能性が高い」
の通りとなっている。vc2005は持っていないから分からん。
C言語なら俺に聞け(入門編)Part 127©2ch.net
248 :デフォルトの名無しさん[sage]:2015/03/15(日) 00:52:05.98 ID:J5ZoTwT2
>>247
なるほど、gcc で

char s[3] = {"abc"};
char s[4] = {"abc"};

の違いを見てたんだけど、そういうことだったのね。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。