[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 05/09 12:26 / Filesize : 14 KB / Number-of Response : 49
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

スレを勃てるまでもないC/C++の質問はここで 9



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がひっついてるとリスト構造を強要されるけど、
無ければ配列やハッシュマップなど他の管理方法をとることもできる。
あくまで原則論で、高速化などのために崩すこともあるけど。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<14KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef