1 名前:デフォルトの名無しさん [2009/03/02(月) 00:36:19 ] スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/
83 名前:64 mailto:sage [2009/03/05(木) 09:18:13 ] >>81 各項目での自分的評価だと、こんな感じです(1が最も短い・速い・わかりやすい・etc): cast: 3321 標準的な記法で、外部知識を要しない。オブジェクトサイズも最小。ただ、キャストの嵐が目に やさしくない(マクロで対処は可能)のとオフセット計算が間違えやすい。パックされた構造の把握は 縦に読む必要がある。縦の行数はパック対象変数分程度。バッファコピーが必要になるとmemcpyが必要。 例: *(uint32_t *)(dst + 4) = (uint32_t)htonl(src); <- これがN行続く memcpy: 4211 標準関数なので、外部知識を要さず、サイズも呼び出しのみで小さい。キャストも不要。 オフセット計算は必要で、転送データ構造のイメージは縦に読んで把握する必要がある。 縦の行数は最大で対象変数の数+エンディアン変換数程度で最大。 例: src = htonl(src); memcpy(dst + 4, &src, sizeof(src)); <- これがN行続く struct: 2222 外部知識は要しないが、一般性で劣る。サイズはキャスト方式と同等か、スタック消費分劣る。 オフセット計算が不要で、構造イメージは横に並んだ順そのままで把握はしやすい。しかし、 構造定義が長くなりがちで、変数の使用位置から離れるとズレやすいかも。バッファコピーが必要に なるとmemcpyが必要。 例: struct { uint32_t _a; uint8_t _b, ... } buf = { htonl(src1), htonl(src2), ... }; <- スタック利用 or typedef struct { uint32_t _a; uint8_t _b, ... } in_t; *(int_t *)(buf + 4) = { htonl(src1), htonl(src2), ... }; <- 既存バッファへの書き込み mprintf: 1113 フォーマット表記の知識を得る必要があるが、処理部分のコードはかなり簡潔にデータ構造を 表現・理解できる。ただし、mprintfの実装分、メモリと処理速度で劣る。処理の中身はmemcpy。 例: mprintf(buf + 4, "NN...", src1, src2, ...);
84 名前:デフォルトの名無しさん [2009/03/05(木) 10:58:37 ] Cを勉強しているのですが 虚数を含んだ計算式を作る必要があるのですが 色々調べたところ、<complex.h>をインクルードすると 虚数iを大文字Iとしてプログラムを書くことで虚数を扱える、とあったのですが 下のようなビルドエラーが出てしまいます(complex.hが無い、という意味か?)。 fatal error C1083: include ファイルを開けません。'complex.h': No such file or directory ちなみに、VC++2008を使って勉強していますが ソース自体はCの文法で書いています。 webでも色々調べたんですが、解決方法は見つからず・・・どなたか助言下さい。
85 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 11:24:30 ] >>84 C++用の <complex> ならあるみたい
86 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 11:51:19 ] 複素数は C99 からなので、手元のコンパイラが対応していなくても泣いちゃだめ。
87 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 14:58:34 ] printf("ロベール先生の第27章から忌み不明になってきた");
88 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 15:58:16 ] #include <iostream> using namespace std; #include <math.h> #define FNC void fnc(); FNC; int main() { fnc(); return 0; } FNC { cout<<"FOFOOFOF"<<endl; } どこが間違っているんでしょうか?
89 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 16:01:21 ] #define FNC void fnc() セミコロン入れたらダメじゃね? 知らんけど。
90 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 16:04:49 ] >>89 ハイパーサンクス
91 名前:デフォルトの名無しさん [2009/03/05(木) 18:27:57 ] >>84 そんな事に手間取るくらいなら自前で作った方が早いだろ。 加減算、乗算は一瞬でしょ。 割り算は意味わからなくても公式で一発だし。
92 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 18:31:38 ] >>83 fputcの要領で、16ビットや32ビットなど必要なものを (中身はエンディアン変換とfwriteを使い)自分で関数を作っていくのはどう? と思ったが、VC++だとfmemopenがないから駄目だよな。
93 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 18:45:46 ] >>84 適当に探せば外部のライブラリがありそうじゃない? それでしのいでいるうちに猛勉強してC++も使えるようになれればおk。…無茶か?
94 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 19:15:15 ] try catchをnew以外に使えてない素人なんだけど、try catchってほかにどんなときに使うの?
95 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 19:31:37 ] 例外をキャッチするときに使う。キャッチしたい例外がないなら別に使わなくても良い。 「自分で書くコードが、どんなときに例外をスローすべきなのか」 となると別の話になるけど。そういうことが聞きたいの?
96 名前:デフォルトの名無しさん [2009/03/05(木) 19:40:34 ] h = FindFirstFile( path, &data ); で FindFirstFile( )関数の失敗した値 INVALID_HANDLE_VALUE が返ってきた時 if( INVALID_HANDLE_VALUE == h ) { FindClose(h); } ってやるんだけど 失敗したときのハンドル値で FindClose() していいの? 失敗してるこの場合 FindClose() はいらないの?
97 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 19:47:00 ] >>96 していい。 ttp://msdn.microsoft.com/ja-jp/library/cc429233.aspx
98 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 19:48:43 ] ごめん。間違えた。 いらなかった。
99 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 19:49:18 ] ごめん。間違えた。 いらなかった。
100 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 20:00:59 ] ごめん。間違えた。 助かった。
101 名前:デフォルトの名無しさん [2009/03/05(木) 22:29:35 ] 構造体の中に、別の構造体のポインタがあるとして、そのポインタが 指し示すアドレスから、そのデータ型の構造体が連続して配置されている場合、 n番目のデータにアクセスしたい場合、どうしたら良いでしょうか。(下記サンプル参照) typedef struct { unsigned char test1; unsigned char test2; } Test_set1; typedef struct { unsigned short test3; unsigned short test4; } Test_set2; typedef struct { Test_set1* test5; Test_set2* test6; } Test_all; volatile const Test_all Test_struct = { (Test_set1*)0x3FFFFFA0, (Test_set2*)0x3FFFFFB0 ←メモリ上では、Test_set2型がn個連なっている。 }; void Test_func(unsigned char index){ unsigned short tmp1, tmp2; tmp1 = Test_struct.test6->test3; tmp2 = Test_struct.test6[index]->test3; ←コレはダメぽい・・・ } やっぱポインタを任意回数インクリメントか、indexを足すしかないでしょうか?
102 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 22:34:24 ] tmp2 = Test_struct.test6[index].test3;
103 名前:101 mailto:sage [2009/03/05(木) 22:54:33 ] >>102 おぉ・・・・・素早いレスありがとうございます。 確かにコンパイル出来るようですっ! 明日アセンブラで狙ったところに アクセスしているか確認してみます。 この場合、test6 はポインタですが、Test_struct.test6[index] と書くと、Test_set2型の RAM扱いになるんでしょうか?(ショボイ質問ですいません)
104 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 22:59:24 ] p[n]は*(p + (n))と同じ
105 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 22:59:54 ] RAMってw
106 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 23:23:12 ] Random Access Machomen
107 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 23:44:50 ] こんなのがわかってないうちからアセンブリやってるの? 順番ちがくね?
108 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:04:27 ] ハード屋なんじゃない?
109 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:08:36 ] int nFibo[16] = { 1, 1 }; これの = { 1, 1 }; って・・・・なんでしょうか・・? こんなの見たことありません・・! これはどういう意味なんですか・・?
110 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:23:18 ] nFibo[0] と nFibo[1] を1で初期化して残りは0で初期化。
111 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:28:44 ] わかりやすい説明サンクス!
112 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:54:22 ] ロベールのC++教室はC++と銘打っているが、ほとんどCの勉強という感じだ。 Effective C++などには配列はやめてvectorとstringを使おうと書かれているが、 ロベールでは徹底的に配列を使う(というより全編にわたってほぼ余すところなく登場する)。 配列はポインタと表裏一体なので、初心者は最初からCの一番の鬼門と真正面から向き合うことになる。 メモリ操作に関する知識は絶対に必要なのでこのスタンスもわからなくはないが初心者にはやや厳しくはないか? 他にも、ビット列の再解釈がしばしば登場したり、ハンガリアン記法が採用されていたり。 まぁ、いずれも必要な知識だけどさ。
113 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:11:00 ] C++の解説には、色々な入口から入る方法がある。 どの解説も同じでは面白くない、違う方が良い。 Cから順番に説明があったり、 いきなりクラスから説明したり、 それを読者が選ぶ事が出来る。良い時代です。 それぞれが、それぞれに良い
114 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:23:41 ] む。なるほどそういう考え方もあるか。確かに。 自分はCを学ぶにあたってポインタの習得にだいぶ苦労したので Accelerated C++でCを勉強したときは目からうろこだった。
115 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:41:15 ] >>113 その考え方ステキだな。 俺は途中でロベールを読んだが、たま〜に知らない事が出てきて面白かった程度の記憶しか残っていない。 (逆に言えば特につっかからなかったとも言える。慣れてたからだろうけど。) 最初に読んでいたらきっと感慨も違っただろうなぁ。
116 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:58:46 ] 私の考え方は他人と違う。。同じかもしれない。 機械語を逆アセンブルするときは、逆順、後ろから読む。 そして、終わったら前から順次読む。 本を読む時も同じ。逆から読む。 変かもしれない 人それぞれです、その人に合ったものを選ぶ事が出来れば幸せになります。 自分自身を知って、マッチする方法を選ぶ能力を養う これが幸せへの法則かもしれません。
117 名前:デフォルトの名無しさん [2009/03/06(金) 15:52:32 ] 数値入力で1〜9999の範囲内で入力してくださいという プログラムで範囲外だとエラー文を表示するのですが、 long型のオーバーフローする値(4294967296)を打ち込むと 入力エラーにならず読み込んでしまいます。 どういった対策をすればよいのでしょうか? ちなみにint型で定義してあります。
118 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 15:53:13 ] コードは?
119 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 15:53:40 ] >>117 doubleで読み込めば
120 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:41:16 ] >117 入力部分と、保持する数値とを分離するとか。 >119 現実的にはともかく、理論的には変わんなくね? そうでもない?
121 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:45:22 ] string に読み込んで桁数判定した後数値変換するとか。
122 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:53:07 ] >>117 そういう時のscanf
123 名前:デフォルトの名無しさん [2009/03/06(金) 18:15:57 ] scanfを恥ずかしげもなく使う男の人って。。。
124 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 18:17:48 ] 男女以前にプログラマとしてどうか
125 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 18:18:29 ] 別に普通
126 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 18:45:28 ] int64整数の補数をint32|int16へ最大値切り詰めにしても余剰bit切り捨てにしても 1〜9999条件なら 4294967296 (0x1 0000 0000)は弾いてくれると思うが 如何か
127 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:27:15 ] strtol を使えば大きすぎるのを入れたときはLONG_MAXになるから弾けるよ
128 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:35:05 ] >>126 弾けるのは4294967296とか、一部じゃないかw
129 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 21:33:28 ] キャストの弊害や精度不足の問題なら対処のしようがあるが もしも 117 の不具合症状を含むライブラリや CPU が有るようなら大問題 概念的指摘ならば問題はないが数字を出して上手くいかないと主張するなら 実行環境を示して頂きたい。
130 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 21:53:18 ] バカは黙ってろw
131 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 21:54:39 ] >>117 >ちなみにint型で定義してあります。 といっているが、そもそもオーバフローする値が入力できるんだから元は 文字列とかint以外の値でしかありえない それをintに変換した後ではじくのは不可能 面倒くさくても地道にやるしかない 1) 文字列のまま取得 2) 前後の空白とかとる 3) 数値以外のものがあったらエラー 4) 先頭の0を削除 5) 5桁以上ならエラー 6) 空文字列なら0 7) 整数変換 とか、まあがんばれ
132 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:31:45 ] まぁ、strtol()を使えば変換終了点が得られるからそこをチェックすれば事が足りるな。
133 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:18:09 ] ポインタは俺の理解を超えてやがる・・・・!!!
134 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 07:38:06 ] >>133 どうしたw突然何があった。 …まあ状況次第ではある意味大半の人の理解を超えているよ。
135 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 07:48:07 ] 自分で組むだけなら、Cは良い言語だと心から言えるが、 他人のソースを読むと微妙な気分になる。 C++はまあまあ良い言語だが、他人のソースは くそったれと思う。 って事かな?
136 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 08:22:39 ] 俺は自分のソース見てくそったれと思う もっときれいに書けないのかよ昔の俺
137 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 08:26:16 ] それはあなたの進化の証。
138 名前:デフォルトの名無しさん [2009/03/07(土) 12:04:25 ] ソースなんて動けばいいよ。動くことが見た目に判ればそれでいい。
139 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 13:45:17 ] ポインタを解りやすく解説してくれるC++のサイト教えてください・・・ ロベール先生すいません あなたの説明は僕の理解を超えている
140 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 13:47:43 ] >>139 適当な本を買った方がいいよ。 サイトは限界があると思う。 …そしてアドレスとポインタが分からないならロベール先生のせいじゃなくてまだC++に入るほどの腕じゃないと言うことだからC言語の本が良いと思うよ。
141 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:02:08 ] アセンブラやればポインタはわかる。 なのでPCプログラミングより8bitマイコンでも触るのお勧め。 ポインタが判らないという事はメモリマップとかスタックイメージも 脳内に浮かんでいないのは確実な訳で、それは計算機の知識が決定的に 欠けてる訳で、ってことはC/HWに限らずJVMやCLRも理解できない訳だから 一番見通しのいい低レベルハードウェアを触って身に付けるといいと思う。
142 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:39:23 ] >>141 あっそ。
143 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:53:10 ] #include <iostream.h>/*ロベール教室より*/ void ChangeToShohwa(int x) { if(1926 < x && x < 1989) x -= 1925; else x = 0; } void Shohwa() { int nYear; cout << "西暦を入力して下さい > "; cin >> nYear; ChangeToShohwa(nYear); if(nYear) cout << "その年は昭和 " << nYear << " 年です。" << endl; else cout << "その年は昭和ではありません。" << endl; } int main() { Shohwa(); Shohwa(); return 0; } なぜこれで失敗するのかが理解できない・・あほでごめんなさい
144 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:07:32 ] >>143 www7b.biglobe.ne.jp/~robe/cpphtml/html01/cpp01034.html > 普通に理由が書かれてるじゃん。
145 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:08:00 ] >>144 手滑った www7b.biglobe.ne.jp/~robe/cpphtml/html01/cpp01034.html >引数は、新たに変数が作られ、それに値が代入されるという仕組みになっているからです。
146 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:17:51 ] >>142 何か気に障るようなこと言ったか?
147 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:20:35 ] ポインターは簡単、ポインターの解説が難しい。 上手に説明できたら天才。
148 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:33:45 ] つまり、なんだかんだでnYearの値が変更できないってこと・?
149 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:46:37 ] なんだかんだというかそのやり方だとnYearがこぴってわたされて そのこぴったのを変更しているだけ
150 名前:142 mailto:sage [2009/03/07(土) 16:14:00 ] >>146 …俺の深読み誤解か。 スマン。
151 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 17:55:04 ] >>147 ポインターのような人間には解りづらく、そして機械に都合のいいように作られたものの使用を強制する言語はダメポ言語 普通は人間に合わせて言語が作られるべきだろ
152 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 18:16:59 ] ポインターは日本語に似合う。皆は知らぬうちに日本語会話の中でポインターを使っている。
153 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 18:33:00 ] >>151 の考える素晴らしい言語のソースも、 ポインターを駆使して記述されています。
154 名前:デフォルトの名無しさん [2009/03/07(土) 18:47:53 ] ボイン太さいこー!
155 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:01:39 ] >>152 This is it.
156 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:11:01 ] int **(*i[10])[4] int (*i())[6] int *(*(*i)())[4] 数秒以内にポインタiが何を指しているのか理解できないと Cの初歩にすら達してないと言われた お前らなら、一目瞭然で数秒どころか一瞬だろ
157 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:19:29 ] >>156 実際そんな使い方はまったくしない。 一目でわかりやすい宣言をするのが上級者。
158 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:25:03 ] 実際は使わないが、錬度を試す訓練だよ
159 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:30:04 ] 数秒でわかったらすごいわ 俺の場合、特に最後は()の解析で時間かかるぞ
160 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:33:59 ] そこに至るまでのコード次第 いきなり 156 が現れたら 書いた奴の精神状態を疑う。
161 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:59:17 ] >>159 俺、今でも数秒では無理だが、宣言をすらすらと解析できないとなると程度しれるよな まだまだ初級のおれがちょっと前に新人にこのp何さしてるのって聞かれたのがこれ int (CC::*(p[3]))(void); これぐらいなら頻繁に使うだろうし、ム板連中なら一瞬だろ ちなみに>>156 は会社の新人PGのC言語コースの理解度試験
162 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:12:25 ] 頻繁に使うか? 俺だったらまずtypedefするが…
163 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:24:13 ] 爆釣
164 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:24:22 ] >>162 どういう風にtypedefするんだ?
165 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:28:02 ] mist000.h18.ru/debug.cpp メンバーイニシャライザを使用したコンストラクタをクラス定義の外に分離したいんだが、 g++でコンパイルするとこのようなエラーが出る。 -------------------------------------------------------- uha@seven:~/dev/uhaww$ g++ -Wall -o debug debug.cpp debug.cpp: In constructor ‘TestException::TestException(std::string&)’: debug.cpp:8: error: ‘sCause’ was not declared in this scope debug.cpp:8: error: expected `{' at end of input debug.cpp: At global scope: debug.cpp:10: error: redefinition of ‘TestException::TestException(std::string&)’ debug.cpp:8: error: ‘TestException::TestException(std::string&)’ previously defined here -------------------------------------------------------- 分離すること自体考えてはいけないのだろうか... メンバーイニシャライザ使わなければ分離できるのに。。 間違いがあればよろしくお願いします。
166 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:28:56 ] >>162 まさか typedef int (CC::*(p[3]))(void) なんて言わないよな int (CC::*(p[3]))(void)が何をあらわすのか、解りやすくするtypedef頼むよ
167 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:29:28 ] 実はほとんど俺の自作自演 >>164 typedef int (CC::*ccpoint)(void); ccpoint p[3]; こんな感じにするんじゃね?
168 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:34:07 ] 2ちゃんねる株式会社ではよく使います。 実際はベテランほど保守性を考慮して単純に書く。 Cの設計者でさえシンプルに書けと言ってるのに、 何を勘違いしてるんだろね。
169 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:38:15 ] むずかしっすぎる!
170 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:46:27 ] int (CC::*(p[3]))(void); が頻繁に出てくるようでは駄目だと思うわ
171 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:57:19 ] Visual C++ 2008 Express Editionの使い方がよくわかりません。 講座サイトの解説で使ってるVisual C++はちょっと違って 現在編集中のプログラムを実行する方法がわかりません。 ご教授よろしくお願いします。
172 名前:165 mailto:sage [2009/03/07(土) 21:01:49 ] お騒がせしました、自己解決しました。
173 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:13:57 ] >>171 F1を押してヘルプを読め
174 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:18:57 ] >>171 スレ違いだろ
175 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:19:31 ] int (CC::*(p[3]))(void)のpって何を指す 日本語で書いてくれ
176 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:21:16 ] pは、配列です。何の配列かと言うと・・・次の人、どうぞ
177 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:22:20 ] パス!
178 名前:175 mailto:sage [2009/03/07(土) 21:26:55 ] あと、>>156 の int **(*i[10])[4] int (*i())[6] int *(*(*i)())[4] のiも頼む
179 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:34:36 ] もしかして、voidさん入店されてはります?
180 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:40:12 ] 全然わからんw 1番目は多次元配列っぽくて、 2番目と3番目は関数ポインタの配列っぽいれすか? あと>>161 はメンバ関数へのポインタっぽい? 答えをたのむぅ。
181 名前:デフォルトの名無しさん [2009/03/07(土) 21:48:22 ] 実際のコードで、こんなの使っちゃダメだが、 Cの文法の知識として、本当におまえら、読めないのか? javaばっかやってるから、バカになる
182 名前:175 mailto:sage [2009/03/07(土) 21:52:00 ] >>180 俺と似たような,orzレベルだな 色々レスしてる人たちって解ってるんでしょ、なら教えてくださいなーーーー
183 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 22:02:29 ] >>181 本当に読めないので、ぜひ、答えを