- 1 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 11:46:21 ]
- スレを勃てるまでもない低俗な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/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/
- 22 名前:デフォルトの名無しさん [2009/04/19(日) 00:40:50 ]
- 複数のPCが一つの共有メモリを参照しながら動作するような
システムがあるとします。 (共有メモリはどれか一つのPC上に存在する) この場合ネットワーク越しにアクセス可能な共有メモリが 欲しくなってしまったのですが、ググってもズバリなページを 見つけることが出来ませんでした。 どなたかヒントになるような知識をお持ちの方、 お教え願えないでしょうか?
- 23 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:47:12 ]
- あ
- 24 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:59:58 ]
- >>22
本当に共有メモリをネットワーク透過で使いたい場合、敢て挙げるなら分散共有メモリとか。 そうじゃなけりゃ分散オブジェクトとかでググれば?
- 25 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:47:36 ]
- スレ違いだったらごめんなさい。
今C言語のポインタを勉強しているのですが、 p : pの指すアドレスを参照 p+1 : pの指すアドレスを+1 p++, p=p+1 : pにpの指すアドレス+1を代入 *(p++), *p++ : pの指すアドレスの内容を参照後にpの指すアドレスを+1 *(++p), *++p : pの指すアドレスを+1した後にpの指すアドレスの内容を参照 *p : pの指すアドレスの内容を参照 *p+1, (*p)+1 : pの指すアドレスの内容に+1 *(p+1) : pの指すアドレスを+1した内容を参照 (*p)++ : pの指すアドレスの内容を参照後にpの指すアドレスの内容を+1 ++(*p) : pの指すアドレスの内容を+1した後にpの指すアドレスの内容を参照 &p : ポインタ変数p自体のアドレス このような解釈でよいのでしょうか? 自分で色々と試したのですが、認識の確認のため投稿させて頂きました。 誤りや他の記述方法があれば教えてください。 よろしくお願いします。
- 26 名前:デフォルトの名無しさん [2009/04/19(日) 01:59:18 ]
- 質問です。
3〜4か月かけて、なおかつ3人ぐらいの人数で役割分担して作れるプログラミングってなんでしょうか? ちなみに、Cプログラムで、習い始めて半年くらい。 Cについて一通り習いました。 考えたんですが、オセロとかは難しすぎますかね?
- 27 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:59:38 ]
- 「アドレス」は+1ずつ変化するとは限らんよ。
pが charへのポインタなら +1だけど、shortへのポインタなら +2される。 一般的に書くと、sizeof(ポインタが指す先の型)だけ変化する。
- 28 名前:25 mailto:sage [2009/04/19(日) 02:04:35 ]
- >>27
理解はしていましたが文章の書き方がまずかったです(^^;) ご指摘ありがとうございます。 他にはいかがでしょうか…?
- 29 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:26:19 ]
- >>25
間違ってるところはない。
- 30 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:26:49 ]
- >>26
俺もオセロ作ったけどCPUなしなら1か月もかからなかった
- 31 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:27:08 ]
- >>28
コンパイラあるんなら自分でそれぐらい確認出来るだろ エアコンパイラ状態?
- 32 名前:デフォルトの名無しさん [2009/04/19(日) 06:02:56 ]
- プログラム内で使う std::exception 派生の例外用のクラスを作って、throw(…) なんかも
きっちり書いてみたんですけど、でも例えば関数内で new に失敗して std::bad_alloc が 発生するようなケースを考えていると、結局は全て throw(std::exception) と書かなきゃ いけないような気がします。throw の宣言はどう書くのが一般的 (慣例的になるか?) なんでしょうか。
- 33 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 06:21:34 ]
- ANSI ではポインタをバイト単位のリニアな数値だなんて規定はしていなかったと思うが。
だから a と b が NULL 以外の同じメモリブロックを差していても a==b が true になる 保証はないし、当然ポインタ同士の減算結果も保証してない。具体的には DOS のような 16bit マシン上のラージメモリモデルなんかは ++ が sizeof(型) 増える保証なんてない。
- 34 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 06:26:06 ]
- 同じ集成体上のオブジェクトを差しているポインタ同士の減算は定義されていて、
要素数にしていくつ離れているかを返すことになっている。
- 35 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 06:36:00 ]
- 集成体って配列の事? 構造体も含む?
まぁ ANSI で正確にはどう規定されているかとかまでは知らんけど。
- 36 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 06:42:21 ]
- 構造体の中身は要素同士が連続してる保証がないから、構造体メンバのポインタの減算はできないはず。
- 37 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 06:53:00 ]
- far ポインタナツカシス
- 38 名前:14,16 [2009/04/19(日) 10:48:17 ]
- >>20-21
丁寧にありがとうございます。書いてないけど知りたかった改行の方法まで書かれてて、本当に助かります。 ところで、「%*c」というのはどういう意味なのでしょうか?
- 39 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 10:49:01 ]
- ポインタの概念はわかるんですが、じゃあ何に使うの?って感じです。
- 40 名前:デフォルトの名無しさん [2009/04/19(日) 10:53:30 ]
- >>39
ポインタの使用例: #include <stdio.h> void f(int *p) { *p = 3; } int main(void) { int i; i = 100; printf("%d\n", i); f(&i); printf("%d\n", i); return 0; }
- 41 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 10:57:04 ]
- >>38
ttp://ja.wikipedia.org/wiki/Scanf
- 42 名前:デフォルトの名無しさん [2009/04/19(日) 11:34:03 ]
- あ
- 43 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 11:34:45 ]
- >>40
ありがとうございます。
- 44 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 11:41:37 ]
- すまんが質問させてくれ
今とあるクラス(Aと過程)を更に別のクラス(Bと過程)で使おうとしてるんだが Bクラスの中では、Aクラスを可変で使おうと思ってる そこでAクラス内部にリスト処理を追加しようか、Bクラス内部で追加しようかで悩んでる 具体的には Aクラスを↓のように追加するか class AClass { private: AClass *next,*prev; }; Bクラスで class BClass { private: typedef struct _tag_hogehoge{ AClass *pA; struct _tag_hogehoge *next, *prev; } hogehoge; }; 果たしてどちらがいいだろうか? オブジェクト指向ならAクラスに追加だけど 高速性を重視にしてるから、Bクラスの方が早いんだよね みなさんならどうしますか?
- 45 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 11:43:52 ]
- >>44
std::list使う。
- 46 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 11:47:13 ]
- オブジェクト指向なら、Aが前後のインスタンスを意識するのは不自然じゃね?
- 47 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 11:54:49 ]
- >>45-46
レス有難うございます >>45 std::listですが、これはランダムアクセスが遅い為に考慮しませんでした ランダムアクセスでも高速で取得出来る様な独自のリスト処理を AクラスかBクラスのどちらかに追加しようと思っています >>46 うーん、そうでしょうか? オブジェクト指向だからこそ、Aクラス自信のインスタンスは Aクラスで処理するものだと考えております
- 48 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 12:07:31 ]
- 原則としてAは自分自身のことだけ知っているべきで、自分がどう管理されるかは
管理するオブジェクトが知っていればいいんじゃないかな? 自分自身に next,prevがひっついてるとリスト構造を強要されるけど、 無ければ配列やハッシュマップなど他の管理方法をとることもできる。 あくまで原則論で、高速化などのために崩すこともあるけど。
|

|