1read 100read
2013年01月プログラム18: スレ立てるまでもない質問はここで 123匹目 (638) TOP カテ一覧 スレ一覧 2ch元 削除依頼
Perlについての質問箱 57箱目 (373)
プログラミング言語 Scala 8冊目 (726)
日本語プログラミング言語『なでしこ』スレ5 (827)
ECMAScript デス 4 (224)
Pythonについて(アンチ専用) (787)
ゲームプログラムなら俺に聞け27 (296)

スレ立てるまでもない質問はここで 123匹目


1 :2012/12/09 〜 最終レス :2013/01/16
質問する前にGoogleで検索しましょう。http://www.google.co.jp
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。
前スレ
スレ立てるまでもない質問はここで 122匹目
http://toro.2ch.net/test/read.cgi/tech/1351769173/

2 :
        _,rr-―''''¨゙゙゙ ̄ ̄ ̄ ̄ ̄`゙゙゙゙゙゙゙゙''ヘi、、   ,,,,-―---、
      ,r‐'″    ._,,,,             `'lri,!'''″     ゙l
     .,,,″    ,,r'"`  ゙゙l,               ゙ヘ,     |
     !アr,   .l°.ェ'ニ,コ .|                ゚ヘ、    |
       `'i、  .く_,、vr''″ .,                  ゙'i、 .,,/
         ゙X、        ト                   ゙!,゛    .,,r‐--、
   ,、_,、 .,,,,r‐'″        |                    } .,,r‐'^’   .|゜
   め゙゚“゙゙~゛           |                     ̄`     .,l゙
   |                ,i´                       ,l゙
   ゙!、                ,i´                       ,ノ
   .'┐              ,,-°  '=,,                   /`
    .゚!,          ,,,,r'″     ゙┐                 ,l゙
      ゚'r,    .''''"`         │    .,,-''i、          /
       `''x,      .|        |  .,,r'"  .゙┐           ,i´
         ~'ヘi,,,   |           |_,r・″    'ヘ,、         l゙
           `¬--|i,,,,,,,,,,,,,,,,v、r',广        ゙ヘ=@   ,l゙
                `゙'ーぃ--r'″           `'―、,,,,/

3 :
動的二次元配列を作ろうとしているのですが
k=10
    char** a=NULL;
a=(char**)malloc(sizeof(char*)*2);
a[1]=(char*)malloc(sizeof(char)*k);
こういう時に
a[1][100]とかに要素数入れられるのがわからんし
sizeof *a[1]がkをいくつにしても4になる理由がわかりません
助けてください

4 :
ポインタは配列じゃないから、サイズの管理なんてしてないし、
mallocは単にメモリを確保するだけで、確保外のメモリを読み書きするのを
禁止してくれたりはしないから、書きこんだらあらぬデータが壊れるかもだし、
エラーで落ちるかも。

5 :
>>1
おつ!

6 :
>>4
ありがとう
上の例でa[1][9]まできっちりメモリ確保されたか確認する手段ってあるんですか?

7 :
>>3
a=(char**)malloc(sizeof(char*)*2);
で、char *というポインタ値を入れる配列が2個できます。
a[0] と a[1]です。ポインタ値は(32bitでは)4bytesです。
a[1]=(char*)malloc(sizeof(char)*k);
で、charという値を入れる配列が k個できます。
a[1][0],a[1][1],,,,a[1][k-2],a[1][k-1]です。
charは、(Cの規格では)1bytesです。
> sizeof *a[1]がkをいくつにしても4になる理由がわかりません
多分 sizeof(a[1]) の事だと思いますが、a[1]は、上に書いたように
ポインタ値(4bytes)なので4になります。
ちなみに、k = 10 であれば、
> a[1][100]とかに要素数入れられるのがわからんし
これは確保した領域外へのアクセスなので、やってはいけません。

8 :
>>6
malloc() の戻り値が NULL 以外なら大丈夫。
ということになっている

9 :
理解できました
みなさん回答ありがとうございます。本当に勉強になりました。
本当に感謝しています

10 :
>>3
a[1][100]のように2次元インデックスでアクセスしたいならば↓のように書く。(C99)
可変長配列はC99の規格なのでそれ以前では定数で与えなければだめ。
a の宣言後にkの値を変更してもだめ。
char (*a)[k] = malloc(sizeof(a[0]) * 2);

11 :
>>10
えーと よく理解できないです
a[0]
a[1]
をそれぞれ別の要素数にしたいのでkを固定しちゃまずいのでは?

12 :
>a の宣言後にkの値を変更してもだめ。
他は兎も角、これについては何を言いたいのか判らん。
c99より前ならそもそもそんな宣言はできないから変更してもダメもへったくれもないわけで。

13 :
>>3
やろうとしていることは、可変長の二次元配列ではなくて
可変長の配列の可変長の配列だろ。
つまり、要素数が例えば2x100とかではなく100+50+30+200のような。
C++で言うところのstd::vector<std::vector<int> >でほぼできることだけど、Cだと
別途管理配列を要素する必要があるね。

14 :
>>11
頭おかしいなお前
>>10のkは>>3のkと同じアルファベットでも全然別物として使ってるんだよ
>>10のピントのずれたレスに惑わされるなんてやばいぞ?

15 :
まずジャグ配列と2次元配列の区別くらいしよう
簡単な用語の話なんだから
2次元配列:長方形
ジャグ配列:ギザギザ

16 :
>>12
お前バカだろ。kを変えるなと言っているのだからC99での宣言に決まってる。

17 :
sizeofを乱発しているソースを見ると、コンパイル時とランタイムの
区別がついてるか心配になる。

18 :
>>16
なるほど、その前の行でc99以外に言及しているからその続きかと思った。
まぁ、c99の話だとしても過去の宣言に遡って要素数が変わるなんて想像さえできなかったが。

19 :
実装を考えると宣言後にも(宣言時の)kの値を参照する必要がある。
kを直接参照するとワヤになるので、宣言時の値を退避しておくのだろう。

20 :
名前と属性を管理するデータベースを作りたいと思っててます。
例えば、
Aさんは「水泳」属性、「走行」属性を持ちます。
Bさんは「水泳」属性、「暗視」属性を持ちます。
この場合、
Name | Attribution
A | 水泳
A | 走行
B | 水泳
B | 暗視
のように登録するのは効率が悪いと思うのです。
何か効率のいいデータベースの構成はないでしょうか?

21 :
>>20
属性の種類に限りがあるかどうかで変わる

22 :
table1(table1ID,name)
table2(table2ID,Attribution )
table3(table1ID,table2ID)
テーブル名と主キー名は適当なんで
好きな名前におきかえてね

23 :
データベース板っていうのがあるんだけど・・・。
とりあえずこの情報だけじゃ判断しかねるわ

24 :
>>21
限りはあります
>>22
何のコードですか?
MySQLでしょうか?
>>23
何が足りないでしょうか。

25 :
>>24
データの種類の数
一人当たりの属性の数

26 :
たとえば、属性の数が数種類くらいなら、ビットを使って所属属性を設定する手もある。
こういう事をすると検索のスピードとかにも影響があるかもしれないし、
その場合の検索スピードは「名前」の数との兼ね合いもあるかもしれない。
0x01 : 水泳
0x02 : 走行
0x04 : 暗視
Name | Attribution
A | 0x03
B | 0x05

27 :
Name|A*(水泳?1:0)+(A-1)*(走行?1:0)…1*(暗視?1:0)

28 :
>>24
コードじゃなくてテーブルの構成ね
テーブル名(列名1,列名1,・・・・列名n)

29 :
http://toro.2ch.net/test/read.cgi/tech/1351769173/997
いや、ないでしょう。
あるのだったら具体的なコードをあげてごらんなさいよ?

30 :
誤爆?

31 :
>>25
>データの種類の数
「名前」と「属性」の2種類
名前は取り敢えず限りは無しということで。属性は25種あります。
>1人当たりの属性の数
1個のものもあれば8個持つものもあります。
まちまちです。

>>26
なるほど
すごく理数的でかっこいいですね。

32 :
>>27
すみません。
不勉強でよくわかりません。
>>28
この構成だと、属性を二つ以上持つ時
例えば
table1(table1ID, name)
ここに
0001, 太郎
table2(table2ID, attribution)
ここに
0001, 水泳
0002, 走行
0003, 暗視
のようにしたとすると、
二つ以上持つ時は結局、(例・太郎が水泳走行暗視を持つ場合)table3で
0001, 0001
0001, 0002
0001, 0003
のようにしなきゃダメってことですよね?

33 :
うん。ダメっていうかコレが基本だと思うよ
横に長いテーブル作るといろいろ面倒だしね

34 :
属性の種類が少なければビットフラグが使えるし
多ければバラしたほうがいい

35 :
>>20
それって小規模のゲームでしょ。
Name | Attribution
A | 水泳, 走行
B | 水泳, 暗視
こんな感じのCSV(comma separated value)で書いちゃえばいいよ。(区切り記号は何でもいいけど)
そのつど解析したってゲームに影響が出るような負荷にならないし。

36 :
>>33-34
ありがとうございました。
取り敢えずビットフラグか順序登録することにします。
>>35
>それって小規模のゲームでしょ。
その通りです。
最初はCSV考えたんですけど、データベースもどうかなと思った次第です。
でもやっぱCSVが良さげですね。
cav使います
ありがとうございます

37 :
>>29
お前がヘボだからちゃんと書けないだけ。
レクチャー料100万モリタポ出すなら教えてやる。

38 :
>>30
誤爆ではない。
java の枠内にとどまる限りまともな効率における二分木を記述できないと主張している。
反論はコードでお願いしますね。

39 :
>>37
反論はコードで。

40 :
タダで教えてもらえると思うな。ヘボ。

41 :
>>40
>>37

42 :
>>40
>>39

43 :
やっぱ、100万モリタポ集めても何の役にも立たないのでやめ。アマゾンギフト10万円分で教えてやるよ。

44 :
Javaでバイナリツリーを書けないカスがタダでコードを要求するなんて10億年早い。

45 :
>>43-44
>>39

46 :
QZaw55cn4c* qz = new QZaw55cn4c();
qz->suicide();
delete qz;

47 :
>>38
どうして突然関係ないバイナリサーチの話を出したの?
誤爆でしょ?アスペでしょ?

48 :
バイナリツリーも満足にかけないクズだけど、前スレの続きだからな。

49 :
前スレで言われたこと根に持ってるって事?
なんかネチネチしててやなおじさん。。

50 :
炎上させてタダで教えを乞おうという魂胆。

51 :
アスペとか生意気
バカでいいよ

52 :
ヘボだから書けないのを言語の欠陥という事にする。ww

53 :
病名を侮蔑のために使うって、民主信者が紛れ込んでるのか?

54 :
>>53
この風邪野郎

55 :
>>53
このハゲ野郎

56 :
馬鹿には無理

57 :
ここまでコードなし
>>52
>>39

58 :
>>57
荒らすな

59 :
変数の別名を操作することと、変数へのポインタ値経由で
操作することで実現できる内容に違いなどない。
内部的な実装というか挙動が少し違う程度で、論理的には
まったく同じことが実現できる。

60 :
>>59
はじめはそう考えていたのですが、現実、囲うとしてもどうしても書けないことにぶち当たりました。
なお非再帰ならばあり、かもしれませんが、これも平衡化に深化できそうにないので考えていません。
>>58
すみません、もうやめます。

61 :
>>57
アマゾンギフト10万円分で教えてやるよ。

62 :
オレなら20万円分でいいぞ

63 :
じゃあ、オレは25万分で。

64 :
教えるって何を?

65 :
ウィンドウハンドルは絶対に重複しないものなんでしょうか?

66 :
>>65
何に使うの?

67 :
WinAPIのEnumWindows関数を使って全てのウィンドウハンドルを取得して
その値をHashSetに入れて扱いたいと考えています (言語はC#です)

68 :
>>67
いやだからそのHashSetに入れる目的は何なのって質問なんだけど。

69 :
EnumWindowsで取得できるのは実行時のスナップショット。
そのスナップショットの中では重複はしない。
スナップショットなので、そのハンドルを使用するときに、ウインドウが存在する
保証はないし、存在しても取得時のウインドウである保証もない。

70 :
>>68
Containsメソッドで条件に該当するハンドルを取り出したいと思っています
>>69
説明ありがとうございます
理解出来ました

71 :
>>70
まぁ、>>69で解決したんならいいんだけどさ、俺は目的を聞いてたわけ。
> Containsメソッドで条件に該当するハンドルを取り出したいと思っています
それも手段。
目的を聞けば、「その範囲なら重複しない」とか「その目的に使う場合は、重複する場合がある」とか
答えられるわけ。

72 :
>>71
今動いている全プロセスのプロセスID・ウィンドウ名・クラス名・ハンドルなどを
子ウィンドウも含めて一覧表示するというプログラムを作るために色々調べています
APIやWindowsSystemの知識が皆無なので少しずつ理解しながら作成していまして、
その中で疑問に思った事を質問した次第です
すみません、もっと具体的に聞くべきでした

73 :
>>72
その中でプロセスIDは開始から終了まで変化しない

74 :
NTの世界観が知りたいなら、procexpをいじってみるべき

75 :
プロセス、スレッド、ウィンドウの列挙ツールなんかは出尽くしてる

76 :
しょうもないことなんだけど、いろんな処理をまとめてるファイルに
*****_class
って名前つけてたんだけど
別の人に
*****_api
とかの方がしっくりこない?
って言われた。
apiもclassも処理の塊を突っ込んでるモノっていうイメージしかないんだけお
apiとclassって何か意味合い的に違いがあるもん?

77 :
処理をまとめたファイルならlibだ。

78 :
オブジェクト(データ)の塊なら class
処理(関数)の塊なら lib
apiは、処理(関数)単一とイメージしてしまう

79 :
>>76
_xxみたいな接尾辞じゃなくてcommonとかutilityでよくね。

80 :
apiが単一なので
その集合体はapis

81 :
apiは名前の通りインターフェイス
自分のシステムを隠蔽した上で、
そのシステムにアクセスするインターフェイスとしてapiを公開する

82 :
>>76
色んな処理をまとめたものに対しては util をよく使うな

83 :
>>76
apiっていうとある1つをイメージする。
classというと、その言葉の意味通り分類されたものをイメージする。
複数入ってるなら後者かな。

84 :
classはC++やJavaのクラスを想起させる
Cでもクラスもどきを作ってるように思うかも

85 :
ATLっておいしいの?
食べてみたい

86 :
>>84
そのclassも同じ意味だろ。

87 :
クラスは基本的には雑多なものをまとめたものではないだろw

88 :
>>86
もともとは同じ意味だったのかもしれないが、今となってはclassと言えば>>84なので、
全く別のものにclassと名付けるのは良くない。

89 :
データ保存以外の意味でsaveが使いにくいようなもん?

90 :
他に用途がある単語を例示しろよ

91 :
あれ?
もしかして抑えるとか助けるって日本語独自の使い方?

92 :
日本語の感覚と齟齬があるなら
日本語プログラミングでもすりゃーイイ

93 :
save our souls

94 :
>>91
守る/護るというとぴったりくることもあるよ。
please save my earth!
god may save the queen!

95 :
省なんちゃらとも使う
save energy
save electricity

96 :
>>88
お前みたいなのがいるから、いちいち新しい語を作んなきゃいけないんだな。

97 :
>>94
この場合、レス先は91よりも90じゃね?

98 :
元々の意味も、class って分類って意味だろ
雑多な物をまとめたものには使えない

99 :
classなら1993じゃね?

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
スレ立てるまでもない質問はここで 123匹目 (638)
HSPプログラムコンテスト2011【part 2】 (452)
関数型言語Part5 (957)
Androidプログラミング質問スレ Part28 (487)
Jython、Groovy、JRuby - どれが一番効率的? (268)
JavaScriptスレ2 (623)
--log9.info------------------
【LGA775】Dual-Core Celeron part19【LGA1155】 (407)
化石マシンの使い道を考える (274)
【オンキヨー】ONKYO総合スレ Part.32【WAVIO】 (495)
nVIDIA GeForce 8800GT Part56 (669)
【ヤマダ】ツクモ、TSUKUMO専用 26店舗目【電機】 (974)
マイクロソフト、Windows 8でフルリテール版を廃止 (710)
【Kepler】GeForceGTX 690 680 670 Part10【GK104】 (1001)
【復活】秋葉原救世主伝説☆THE津軽【再生】 (204)
【乞食】イラナイパーツクレ 60【神】 (702)
WesternDigital製HDD友の会 Vol.164 (517)
【倒産詐欺】星野ING・ソルダム117【義捐金詐欺】 (369)
【RADEON】 HD79xx Part19 【Tahiti】 (661)
【RADEON】 HD78xx Part13 【Pitcairn】 (512)
【LGA1155】IvyBridge Part 49 【22nm】 (327)
【SandyBridge-E】オーバークロック報告 3【2011】 (634)
パーツパラダイス 高橋敏也スレ24 (319)
--log55.com------------------
UR@N改めAiRI応援スレ 3
【ミスロイに】MYTH&ROID【外れ無し】
入手困難なアニメ・特撮主題歌CD 21枚目
美郷あき lesson6
【荒磯・WA】峰倉かずやメディアミックス総合W【スティグマ】
【作曲】飯塚昌明3.1曲目【編曲】
テレビでアニソンが流れたらageるスレ 3曲目
アンチJAM Project その4