C言語なら俺に聞け(入門編)Part 96
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2012/02/04(土) 03:01:40.24★前スレ
C言語なら俺に聞け(入門編)Part 95
http://toro.2ch.net/test/read.cgi/tech/1326459906/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 156代目
http://toro.2ch.net/test/read.cgi/tech/1328276597/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0809785=787
2012/02/11(土) 14:41:39.18とした時に、
p = &i;
ってする必要性に迫られることはまず無い。
ましてや、
p++;
なんてすること100%ない。
悪いけど、上の書き方で理解しようとしないで欲しい。
int ary_a[] = {0, 1, 2, 3, 4, 5, 6, 7};
int ary_b[] = {100, 101, 102, 103, 104, 105, 106, 107};
int *p;
int **pp = {ary_a, ary_b};
// OKな場合
p = ary_a;
pp = &p;
p++; // pの型が(int *)型なので、(int)幅でアドレスがインクリメントされる
pp++; // ppの型が(int **)型なので、(int *)幅でアドレスがインクリメントされる
// NGな場合
面倒くさくなったのでNGな場合は書きません。
ってことです。
0810785=787
2012/02/11(土) 14:42:50.95分からない所があれば聞きに来て下さい。
http://codepad.org/GtPbUqA2
0811デフォルトの名無しさん
2012/02/11(土) 14:43:21.16> 面倒くさくなったのでNGな場合は書きません。
書けません の間違いだろ
アホはさっさと消えろ
0812785=787
2012/02/11(土) 14:46:17.813回に分けて>>810の内容を投稿。
1/3
#include <stdio.h>
#define ELEMENT_NUM 8
void dump(void *p, int n)
{
int i;
unsigned char *data = (unsigned char *)p;
fprintf(stdout, "dumped start = %p\n", p);
fprintf(stdout, "%*s", 11, "");
for (i=0;i<16;i++){
fprintf(stdout, "%02x ", (unsigned int )(data + i) & 0x0f);
}
fprintf(stdout, "\n");
for (i=0;i<n;i++) {
if (i % 16 == 0) {
fprintf(stdout, "%p ", data + i);
}
fprintf(stdout, "%02x ", data[i]);
if ((i + 1) % 16 == 0) {
fprintf(stdout, "\n");
}
}
}
0813785=787
2012/02/11(土) 14:46:59.33int main(void)
{
int ary_a[] = {0x00010203, 0x04050607, 0x08090a0b, 0x0c0d0e0f,
0xbb04, 0xba05, 0xb906, 0xb807};
int ary_b[] = {0xf00, 0xe01, 0xd02, 0xc03, 0xb04, 0xa05, 0x906, 0x807};
int *p;
int *ary_a_b[] = {ary_a, ary_b};
int **pp;
int i, j;
fprintf(stdout, "ary_a = %p\n", ary_a);
for(i=0;i<ELEMENT_NUM;i++){
fprintf(stdout, "ary_a[%d] = 0x%08x\n", i, ary_a[i]);
}
fprintf(stdout, "\n");
fprintf(stdout, "ary_b = %p\n", ary_b);
for(i=0;i<ELEMENT_NUM;i++){
fprintf(stdout, "ary_b[%d] = 0x%08x\n", i, ary_b[i]);
}
fprintf(stdout, "\n");
fprintf(stdout, "ary_a_b = %p\n", ary_a_b);
for(j=0;j<2;j++){
fprintf(stdout, "ary_a_b[%d] = %p\n", j, ary_a_b[j]);
}
fprintf(stdout, "\n");
0814785=787
2012/02/11(土) 14:47:58.20で完了。
3/3
pp = ary_a_b;
fprintf(stdout, "pp = %p\n", pp);
for(j=0;j<2;j++){
fprintf(stdout, "pp[%d] = %p\n", j, pp[j]);
for(i=0;i<ELEMENT_NUM;i++){
fprintf(stdout, "pp[%d][%d] = 0x%08x\n", j, i, pp[j][i]);
}
fprintf(stdout, "\n");
}
/* 128 は適当 */
dump(ary_a, 128);
return 0;
}
長い‥‥‥。
0816730
2012/02/11(土) 14:49:43.09確かに、単変数iを定義しといて、そのアドレスを保持するポインタを
インクリメントすることはナンセンスですね。。例が悪かったです。
通常は、おっしゃる通り配列を受ける際にポインタを使用しますね。
>>810
参考例、読んでみます。
わからないことが出たらまた、聞きにきます。
貴重なお時間割いていただきどうもありがとうございます。
レスってなんですか?
0818デフォルトの名無しさん
2012/02/11(土) 14:57:13.17>>810のdump()の出力内容を理解するには、endianの知識が必要になる。
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3
の「概要」の箇所をまず読んで欲しい。
dump内容を例と結びつけるのは大変だと思うけど、
紙でも使って頑張って。
>>811
投稿順序が逆になっちゃったけど、
>>810の例を書いていてめんどくなっちゃった。
>>810で十分だろって思ったらもういいやって思って書かなくなった。
そもそも、駄目な例は知らなくていいし。
初心者のうちは駄目な例ってのは有害だと思う。
初心者は、綺麗な良い例を学ぶだけで十分なんだよ。
0819785=787
2012/02/11(土) 15:06:59.30>>812の dump()だけ以下の内容で書き換えて。
こっちの方が理解しやすい。
void dump(void *p, int n)
{
int i;
unsigned char *data = (unsigned char *)p;
fprintf(stdout, "dumped start = %p\n", p);
fprintf(stdout, "%*s", 11, "");
for (i=0;i<16;i++){
fprintf(stdout, "%02x ", (unsigned int )(data + i) & 0x0f);
if ((i + 1) % 4 == 0) {
fprintf(stdout, "| ");
}
}
fprintf(stdout, "\n");
for (i=0;i<n;i++) {
if (i % 16 == 0) {
fprintf(stdout, "%p ", data + i);
}
fprintf(stdout, "%02x ", data[i]);
if ((i + 1) % 4 == 0) {
fprintf(stdout, "| ");
}
if ((i + 1) % 16 == 0) {
fprintf(stdout, "\n");
}
}
}
0820730
2012/02/11(土) 15:08:22.93エンディアンについては知っていました。
wikiは読んで再確認しました。
ただ、それ以前に問題が、、
12: fprintf(stdout, "%*s", 11, "");
がわかりません。
"%*s"ってどういう意味でしょうか?
また、引数に11と""が入るのはなぜでしょうか。
0821デフォルトの名無しさん
2012/02/11(土) 15:08:23.720822デフォルトの名無しさん
2012/02/11(土) 15:29:58.28%*sとすると、フィールド幅を引数で指定することができる
つまり、
printf("%*s", 11, "");
とすると、11桁のフィールド幅で文字列を表示し、その文字列は空文字
になっている
結果として、11桁のスペースが出力される
また一つ勉強になりました。
0823785=787
2012/02/11(土) 15:30:02.35短い例、短い例って馬鹿じゃないの?
>>730には短い例で説明するのは不可能だよ。
初心者さんで、自分から向上しようとする珍しい初心者さんだから、
頑張って>>810,812-814を書いたんだ。
>>755は間違いじゃないけど、正確でも無い
アドレスに型はない。
単なる数値だよ。
アドレスの型といういい方はしない。
正確には、
何の型のポインタかによって、
+1したときに進む大きさが違う。
実際に進む大きさは、
sizeof(型)
で決められる。
実行例。
sizeof(char) = 1
sizeof(char *) = 4
sizeof(int) = 4
sizeof(int *) = 4
sizeof(void) = 1
sizeof(void *) = 4
str = 0x8048650, "abcdef"
p + 1 = 0x8048651
p_int + 1 = 0x8048654
p_void + 1 = 0x8048651
0824デフォルトの名無しさん
2012/02/11(土) 15:30:54.44#include <stdio.h>
int main(void)
{
char *str = "abcdef";
char *p;
int *p_int;
void *p_void;
p = str;
p_int = (int *)str;
p_void = (void *)str;
fprintf(stdout, "sizeof(char) = %d\n", sizeof(char));
fprintf(stdout, "sizeof(char *) = %d\n", sizeof(char *));
fprintf(stdout, "sizeof(int) = %d\n", sizeof(int));
fprintf(stdout, "sizeof(int *) = %d\n", sizeof(int *));
fprintf(stdout, "sizeof(void) = %d\n", sizeof(void));
fprintf(stdout, "sizeof(void *) = %d\n", sizeof(void *));
fprintf(stdout, "str = %p, \"%s\"\n", str, str);
fprintf(stdout, "p + 1 = %p\n", p + 1);
fprintf(stdout, "p_int + 1 = %p\n", p_int + 1);
fprintf(stdout, "p_void + 1 = %p\n", p_void + 1);
return 0;
}
0825730
2012/02/11(土) 15:31:34.77あ、間違えてメル欄に書いちゃったw
0827730
2012/02/11(土) 15:38:37.96ありがとうございます。
よくわかりました。
sizeof()で実際にコードを書いてみれば一目瞭然ですね。
環境によるかもしれませんが、この場合、ポインタは
(char *)でも、(int *)でも(void *)でも4バイトなんですね
0828730
2012/02/11(土) 15:41:37.43自分は結構Cを嗜んでいた方だと思っていましたが、まだまだ知らないことが
たくさんありますね
OOPでないレガシーなCも、やっぱり奥深い
0829730
2012/02/11(土) 15:47:52.54行数長いので、一部省略してます
ary_a = 0x7fff5fbff5d0
(中略)
ary_b = 0x7fff5fbff5b0
(中略)
ary_a_b = 0x7fff5fbff590
(中略)
pp = 0x7fff5fbff590
pp[0] = 0x7fff5fbff5d0
(中略)
pp[1] = 0x7fff5fbff5b0
(中略)
dumped start = 0x7fff5fbff5d0
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
0x7fff5fbff5d0 03 02 01 00 07 06 05 04 0b 0a 09 08 0f 0e 0d 0c
0x7fff5fbff5e0 04 bb 00 00 05 ba 00 00 06 b9 00 00 07 b8 00 00
0x7fff5fbff5f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7fff5fbff600 18 f6 bf 5f ff 7f 00 00 74 08 00 00 01 00 00 00
0x7fff5fbff610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7fff5fbff620 01 00 00 00 00 00 00 00 58 f7 bf 5f ff 7f 00 00
0x7fff5fbff630 00 00 00 00 00 00 00 00 bc f7 bf 5f ff 7f 00 00
0x7fff5fbff640 cc f7 bf 5f ff 7f 00 00 06 f8 bf 5f ff 7f 00 00
0830デフォルトの名無しさん
2012/02/11(土) 15:51:41.14何の役にも立たない。
かえって有害。
0831デフォルトの名無しさん
2012/02/11(土) 15:52:11.29なんてどの口が言えるんだろう...
0832デフォルトの名無しさん
2012/02/11(土) 15:54:10.36本人に自覚がないからいつまでもしがみついてるのか、
それとも荒らし目的か。
0833デフォルトの名無しさん
2012/02/11(土) 15:58:22.860834デフォルトの名無しさん
2012/02/11(土) 15:59:37.31死ね死ね死ね死ね死ね
0835730
2012/02/11(土) 16:01:07.31私の環境だと、ポインタは8バイトでした。
また、sizeofの戻り値がunsigned longだったので、%d→%luに変更して
コンパイル・実行しました。
sizeof(char) = 1
sizeof(char *) = 8
sizeof(int) = 4
sizeof(int *) = 8
sizeof(void) = 1
sizeof(void *) = 8
str = 0x100000e90, "abcdef"
p + 1 = 0x100000e91
p_int + 1 = 0x100000e94
p_void + 1 = 0x100000e91
提供いただいたdumpコードは動作がわかり、勉強になりました。
どうもありがとうございます。
迷惑になるので、とりあえずこの辺にしておきます。
スレ汚し失礼しました。
0836デフォルトの名無しさん
2012/02/11(土) 16:02:45.53コンパイラ何使ってんの?
0838デフォルトの名無しさん
2012/02/11(土) 16:09:23.7964bitとか、使ったことないわw
0839730
2012/02/11(土) 16:13:43.40ここでは叩かれちゃうかもしれませんが、、Mac OS X Snow Leopard 10.6.8です
(最新のMac OS X Lion(10.7)は、評判悪そうなのでまだ控えてます)
Windows 7もBoot campで入れてありますが、常用しているのは
Mac OS Xの方です。
おっしゃる通り64bitマシンです
0840785=787
2012/02/11(土) 16:14:09.05> 環境によるかもしれませんが、この場合、ポインタは
> (char *)でも、(int *)でも(void *)でも4バイトなんですね
そうそう。
sizeof(void *)と同じ大きさだと思ってたから、
私もsizeof(void)について勉強になった。
1だとは思わなかったよ。
参考までに。
linuxだけど、私が知っているsizeof(int), sizeof(void *)が8になる環境は、
CPUが64bitなだけじゃ駄目で、kernelも64bit版のものでないと駄目。
windowsは知らん。
>>815
◆QZaw55cn4cは、
初心者にきちんと話をできないんだったら黙ってろよ。
はっきり言いますが、
◆QZaw55cn4cは、有害でしかない。
今回は初心者の方に絡んでいるようだったので、
何を書いているか確認しましたが、やはり確認する必要のないものでした。
>>829は貴重な環境を持っているじゃないか。
>>824を試してみて。
多分、私と違う実行結果になるよ。
うーん、初心者の方じゃなかったのだろうか。
うーん。
0841デフォルトの名無しさん
2012/02/11(土) 16:15:11.62いや、もちろんOSは64bitだけど、ポインタが64bitってのを使ったことがないのよ。
macだとgccデフォで64bitなんか。
0842785=787
2012/02/11(土) 16:15:59.41>>814に以下を追加して。
細かいerrorが出るだろうけど、適時自分で修正して。
int dump_size;
dump_size = sizeof(int) * 19 + sizeof(int *) * 1 + sizeof(int **) * 2;
fprintf(stdout, "dump_size = %d, 0x%08x\n", dump_size, dump_size);
dump(ary_a, dump_size);
0843デフォルトの名無しさん
2012/02/11(土) 16:17:43.07でたらめまき散らすの止めて引っ込んでろ。お前もQZと同程度の害虫だ。
0844デフォルトの名無しさん
2012/02/11(土) 16:18:20.700845730
2012/02/11(土) 16:22:56.42いろいろとお付き合いいただきどうもありがとうございます。
とても勉強になっています。
プログラミングは趣味で好きでやってますが、ご覧の通り、
私はまだまだ知らないことの多い初心者ですよ。。
作っていただいた>>824を試した結果が、>>829です
改行が多くて全てはのせきれませんでしたが。。
>参考までに。
>linuxだけど、私が知っているsizeof(int), sizeof(void *)が8になる環境は、
>CPUが64bitなだけじゃ駄目で、kernelも64bit版のものでないと駄目。
なるほど、そうなんですね。
Intel C2Dなので、もちろんCPUは64bitですが、kernelも今は64bitで動かしてます。
Snow Leopardは、32bit→64bit移行期の微妙なところのOSなので、実は、
一部32bitで動いているソフトもあったりします。
詳しいことはわかりませんが、そこは、結構柔軟にOSが対応しているようです。
0846デフォルトの名無しさん
2012/02/11(土) 16:31:21.680847730
2012/02/11(土) 16:32:02.69もしかしたら、何かの参考になるかもしれないので、一応、結果あげますね
まだ、意味は理解してませんが、とりあえず実行結果です
オリジナルのdump(ary_a, 128);はコメントアウトしました。
(改行が多いと怒られてしまうので、最後のdump結果だけのせます)
dump_size = 100, 0x00000064
dumped start = 0x7fff5fbff5d0
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
0x7fff5fbff5d0 03 02 01 00 07 06 05 04 0b 0a 09 08 0f 0e 0d 0c
0x7fff5fbff5e0 04 bb 00 00 05 ba 00 00 06 b9 00 00 07 b8 00 00
0x7fff5fbff5f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7fff5fbff600 18 f6 bf 5f ff 7f 00 00 24 08 00 00 01 00 00 00
0x7fff5fbff610 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7fff5fbff620 01 00 00 00 00 00 00 00 58 f7 bf 5f ff 7f 00 00
0x7fff5fbff630 00 00 00 00
>アドレスに型はない。
ポインタには型はある。
>正確には、
正確ではない。
>何の型のポインタかによって、+1したときに進む大きさが違う。
それだけではない。*p としたときの値を取り込む範囲が異なる。
アラインメントなど触れておきたいことは多々あるが、この点が抜けているようでは正確とはいえない。
>>762 はその点も押さえている。
0849デフォルトの名無しさん
2012/02/11(土) 16:35:26.94何用のモジュールとしてコンパイルしてるかで決まるだろ。
コンパイラーオプションで選べるんじゃ無いの?
32ビット環境で64ビット用モジュールも書けるし
64ビット環境で32ビットプログラムも書けるだろ。
64ビットOSでも32ビットの仮想実行環境もあるし
32ビットOSでも仮想16ビット実行環境を用意してるのもある。
そういうOSなら、OSとは異なったビット幅のプログラムでも実行できる
0850785=787
2012/02/11(土) 16:40:04.67>>842は%08xを%016xに修正する必要がありそうだけど。
dump()はsizeof(int)が8でも大丈夫なように修正。
void dump(void *p, int n)
{
int i;
unsigned char *data = (unsigned char *)p;
fprintf(stdout, "dumped start = %p\n", p);
fprintf(stdout, "%*s", 3 + sizeof(int) * 2, "");
for (i=0;i<16;i++){
fprintf(stdout, "%02x ", (unsigned int )(data + i) & 0x0f);
if ((i + 1) % sizeof(int) == 0) {
fprintf(stdout, "| ");
}
}
fprintf(stdout, "\n");
for (i=0;i<n;i++) {
if (i % 16 == 0) {
fprintf(stdout, "%p ", data + i);
}
fprintf(stdout, "%02x ", data[i]);
if ((i + 1) % sizeof(int) == 0) {
fprintf(stdout, "| ");
}
if ((i + 1) % 16 == 0) {
fprintf(stdout, "\n");
}
}
}
0851デフォルトの名無しさん
2012/02/11(土) 16:42:01.88普通gccデフォじゃ64bitコンパイルできないよ。
0852785=787
2012/02/11(土) 16:45:28.43dump_sizeが100なのは計算があわんと思ったけど、
>>835で
sizeof(int) = 4
って書いてたね。。。
ということで、、、
>>850のsizeof(int)と書いてる3箇所は sizeof(void *)に直して。。。
ごめんね。。。
0853730
2012/02/11(土) 16:46:31.98なるほど、そういうことだったんですね
調べてみたら、コンパイラオプションを32bitに指定できるところがありました。
結果は、こうなりました。
sizeof(char) = 1
sizeof(char *) = 4
sizeof(int) = 4
sizeof(int *) = 4
sizeof(void) = 1
sizeof(void *) = 4
str = 0x1ee0, "abcdef"
p + 1 = 0x1ee1
p_int + 1 = 0x1ee4
p_void + 1 = 0x1ee1
0854デフォルトの名無しさん
2012/02/11(土) 16:47:12.22-m32 -m64 じゃないの?
うちのLinux64bitだとデフォで64bitみたいだけど
0856730
2012/02/11(土) 17:03:17.88あってるかな。。一応64bitでコンパイルし、dump結果は下記です。
もし必要であれば、最終ソースをcodepad等にあげていただければ、64bitでコンパイルして
結果をあげます。。
dump_size = 100, 0x00000064
dumped start = 0x7fff5fbff5d0
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0a | 0b | 0c | 0d | 0e | 0f |
0x7fff5fbff5d0 03 | 02 | 01 | 00 | 07 | 06 | 05 | 04 | 0b | 0a | 09 | 08 | 0f | 0e | 0d | 0c |
0x7fff5fbff5e0 04 | bb | 00 | 00 | 05 | ba | 00 | 00 | 06 | b9 | 00 | 00 | 07 | b8 | 00 | 00 |
0x7fff5fbff5f0 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
0x7fff5fbff600 18 | f6 | bf | 5f | ff | 7f | 00 | 00 | a4 | 07 | 00 | 00 | 01 | 00 | 00 | 00 |
0x7fff5fbff610 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
0x7fff5fbff620 01 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 58 | f7 | bf | 5f | ff | 7f | 00 | 00 |
0x7fff5fbff630 00 | 00 | 00 | 00 |
0857デフォルトの名無しさん
2012/02/11(土) 17:04:21.310858785=787
2012/02/11(土) 17:05:25.24sizeof(char *) = 4
sizeof(int) = 4
sizeof(int *) = 4
sizeof(void) = 1
sizeof(void *) = 4
str = 0x80485f0, "abcdef"
p + 1 = 0x80485f1
p_int + 1 = 0x80485f4
p_void + 1 = 0x80485f1
↑-m32をつけて32bit環境で実行。
32bit環境で-m64つけてcompileしようとしたら、
In file included from /usr/include/stdio.h:28:0,
from ary.c:1:
/usr/include/features.h:323:26: 致命的エラー:
bits/predefs.h: そのようなファイルやディレクトリはありません
コンパイルを停止しました。
って言われてもうた。
64bit環境で-m64つけてcompile後実行するとこんなんだった。
sizeof(char) = 1
sizeof(char *) = 8
sizeof(int) = 4
sizeof(int *) = 8
sizeof(void) = 1
sizeof(void *) = 8
str = 0x40075c, "abcdef"
p + 1 = 0x40075d
p_int + 1 = 0x400760
p_void + 1 = 0x40075d
intが64bitっていうのは嘘なの???
ちょっと混乱中。。。
0859デフォルトの名無しさん
2012/02/11(土) 17:09:56.640860785=787
2012/02/11(土) 17:19:18.05どうぞ。
http://codepad.org/V0maBlpJ
0861785=787
2012/02/11(土) 17:25:36.16ありがとう。
ほんとだった。
long は64bit扱いされているようだった。
$ gcc -m32 ptr.c -o ptr32 && ./ptr32
sizeof(int) = 4
sizeof(int *) = 4
sizeof(long) = 4
sizeof(long *) = 4
sizeof(void) = 1
sizeof(void *) = 4
str = 0x8048650, "abcdef"
p + 1 = 0x8048651
p_int + 1 = 0x8048654
p_long + 1 = 0x80485bd
p_void + 1 = 0x8048651
$ gcc -m64 ptr.c -o ptr64 && ./ptr64
sizeof(int) = 4
sizeof(int *) = 8
sizeof(long) = 8
sizeof(long *) = 8
sizeof(void) = 1
sizeof(void *) = 8
str = 0x4007ac, "abcdef"
p + 1 = 0x4007ad
p_int + 1 = 0x4007b0
p_long + 1 = 0x7fffa6940f28
p_void + 1 = 0x4007ad
0862730
2012/02/11(土) 17:35:46.23ソースのアップどうもありがとうございます。
問題なく実行できているようです。
結果は、64bit環境をお持ちのようですし、>>857のこともあるので控えます。
0863デフォルトの名無しさん
2012/02/11(土) 18:03:47.55> ポインタには型はある。
おまえさっき、char *p がレジスタとか言ってたろ
そーゆーのを五十歩百歩つーんだよ
0864785=787
2012/02/11(土) 18:11:59.82了解。
ごめんだけど、dump_size以下は↓のように変更して。
64bit環境ではなんか32bit環境と違うaddressの取り方してるっぽい。
stackが逆に伸びていってた。
dump_size = sizeof(int) * 19 + sizeof(int *) * 2 + sizeof(int **) * 1;
fprintf(stdout, "dump_size = %d, 0x%08x\n", dump_size, dump_size);
fprintf(stdout, "ary_a\n");dump(ary_a, sizeof(ary_a));
fprintf(stdout, "ary_b\n");dump(ary_b, sizeof(ary_b));
fprintf(stdout, "ary_a_b\n");dump(ary_a_b, sizeof(ary_a_b));
fprintf(stdout, "pp\n");dump(pp, sizeof(pp));
0865785=787
2012/02/11(土) 18:14:33.28>>848は逃げ口上を用意しているから後で逃げれると思ってるようだよ。
「燃料投下もそろそろ潮時か」なんて書いておいて、
逃げの体制を確保できていると思っているらしい。
今後、誰からも相手にされなくなるだけなのに、
なんで分かんないんだろ。
逃げるもなにも、感じたことを書いているだけですが。
>今後、誰からも相手にされなくなるだけなのに、
初学者のお相手が務まればそれで十分。身のある話に絞っているつもりです。
だいたい解説側が codepad も使わずにだらだら書いているセンスに疑問を持っていますね。
>>863
まあこれは私の舌足らずが問題ですかね。
0867デフォルトの名無しさん
2012/02/11(土) 18:47:11.09今もこの板のほぼ全員からさげすまれている。
とっとと、訂正、謝罪を済ませて、電車に飛び込め。
> far を使おうが何をしようが、64KB の壁は
> 超 え ら れ な い
>とっとと、訂正、謝罪を済ませて、電車に飛び込め。
どこを訂正しろというんです?
0869デフォルトの名無しさん
2012/02/11(土) 18:57:45.46さげすまれてるというより、かなりウザがられてると思う
そしてウザがられてるのにも関わらずいつまでもしつこくレスを繰り返す
人のいやがることをやり続けるとか>>866はマジで精神異常じゃねぇの
0870デフォルトの名無しさん
2012/02/11(土) 18:59:03.390871デフォルトの名無しさん
2012/02/11(土) 19:11:37.290872デフォルトの名無しさん
2012/02/11(土) 19:17:27.57ただの荒らしww
荒らすことしかできない池沼www
0873デフォルトの名無しさん
2012/02/11(土) 19:17:52.282GBもしくは3GBに壁があるよ。
0874デフォルトの名無しさん
2012/02/11(土) 19:21:03.83そんなに確保せにゃならんて
設計に問題があるんだろ
低脳は引っ込んでよ
0875デフォルトの名無しさん
2012/02/11(土) 19:22:00.44正)低脳は引っ込んでろよ
0876デフォルトの名無しさん
2012/02/11(土) 19:23:04.72かわいいやつだなw
そこはいいだろ別にw
0877704
2012/02/11(土) 19:29:19.91どっちが優秀かなんて一発で判定できるだろ。目に見えて明らかに判定できるだろ。
おれの予想だと◆QZaw55cn4cの圧勝だがな。
制限時間は深夜0時までの5時間やる。(こんなの5分で書けよwww)
◆QZaw55cn4c叩いてる奴の腕前にとくと期待してるわwww
0878704
2012/02/11(土) 19:31:04.970879デフォルトの名無しさん
2012/02/11(土) 19:31:51.85メモリのサイズの話?
Janeとかで大量に画像開くとその辺の壁に、、、わりとすぐぶつかるよね
0880デフォルトの名無しさん
2012/02/11(土) 19:34:11.17たぶん逃げられると思うけど、今のうちに自分が最速だと思うコードをcodepadとかに貼っておくといいよ。
後から貼っただろって言われなくてすむように。
0881デフォルトの名無しさん
2012/02/11(土) 20:27:38.33自分の仕事は自分でね。
できないなら最初から言うように。
0882デフォルトの名無しさん
2012/02/11(土) 20:42:16.190883デフォルトの名無しさん
2012/02/11(土) 20:44:00.65クズ連合はいいけど、お前らクズ以下の連中の寄せ集めは何て呼べばいいのかな。
0884デフォルトの名無しさん
2012/02/11(土) 20:46:07.34なんの冗談だよw
0885デフォルトの名無しさん
2012/02/11(土) 20:46:53.50何か能力があっても人に不快感を与えるゴミは社会に不要
社会に出てくるだけで迷惑なんだよ
0886デフォルトの名無しさん
2012/02/11(土) 20:50:38.07一般人「ぎゃぁキチガイ」
基地害「逃げたなw俺の勝ちだw」
基地害=>>877を含むクズ以下の寄せ集め
こういう構図だろ。
ほっとけよ。
0887デフォルトの名無しさん
2012/02/11(土) 21:08:29.43(´ー`)y-~~
0888デフォルトの名無しさん
2012/02/11(土) 21:39:06.910889デフォルトの名無しさん
2012/02/11(土) 21:58:50.930890デフォルトの名無しさん
2012/02/11(土) 23:09:42.19つーか、自分の仕事だろ?w
0891デフォルトの名無しさん
2012/02/11(土) 23:15:23.360892デフォルトの名無しさん
2012/02/11(土) 23:19:03.630893デフォルトの名無しさん
2012/02/12(日) 01:22:49.65こいつ最高にアホ↑AA略
0894デフォルトの名無しさん
2012/02/12(日) 01:46:59.11大抵のコードは最適化されてしまうので、彼は打鍵速度の事を言っているのではないの?
0895デフォルトの名無しさん
2012/02/12(日) 02:04:03.030896デフォルトの名無しさん
2012/02/12(日) 06:40:14.65これって短くならないの?
0897デフォルトの名無しさん
2012/02/12(日) 06:56:35.14if((!A&&B&&C)||A)
0898デフォルトの名無しさん
2012/02/12(日) 07:01:56.14if ((!A && !B) || (!A && !C))
0899デフォルトの名無しさん
2012/02/12(日) 07:03:40.22>>897でおk。
0900デフォルトの名無しさん
2012/02/12(日) 07:10:50.83A || (B && C)
でいけるんじゃないか?
0901デフォルトの名無しさん
2012/02/12(日) 07:12:18.25いけるね
0902デフォルトの名無しさん
2012/02/12(日) 07:31:18.32コミュ障のゴミでも能力があればそれなりに受け入れられる。
QZはコミュ障のゴミかつ無脳だから叩かれている。
0903デフォルトの名無しさん
2012/02/12(日) 07:40:52.980904デフォルトの名無しさん
2012/02/12(日) 07:47:31.410905デフォルトの名無しさん
2012/02/12(日) 07:47:57.86>人に不快感を与えるゴミ
受け手側の問題もあるのでは?
>>902
>コミュ障のゴミかつ無脳だから
×無脳
○無能
叩きの文章で漢字を間違えていては叩きにならない。
そういえば、「アスペルガー」とか「AHDH」とか言われたことがありますね。
調べてみるとどっちにも当てはまる私は重度の発達障害らしいですな。
0907デフォルトの名無しさん
2012/02/12(日) 08:26:04.44向いてないんだろうね。
0908デフォルトの名無しさん
2012/02/12(日) 08:42:43.14レス数が900を超えています。1000を超えると表示できなくなるよ。