- 1 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 03:01:40.24 ]
- C言語の*入門者*向け解説スレッドです。
★前スレ C言語なら俺に聞け(入門編)Part 95 toro.2ch.net/test/read.cgi/tech/1326459906/ ★過去スレ 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代目 toro.2ch.net/test/read.cgi/tech/1328276597/ ★C++言語については避けてください。C++対応明記スレへどうぞ ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 長くなりそうなコードはcodepadに貼り付けてもいいでしょう codepad.org/
- 182 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:25:29.62 ]
- その実装だと誤動作するよ。自動変数で調べてね。
以下のいずれかの修正をしてもらう必要がある。 @ void getData(*****) { . static int data[N][M]; } Aソースを分割して、 static int data[N][M]; void getData(*******); B malloc つかう。
- 183 名前:174 mailto:sage [2012/02/07(火) 19:29:37.65 ]
- >>182
おお! すみません・・・static扱いでお願いします。 実際はstaticでした。懸案事案の抽象化に失敗してしまいました・・・ void func1(@){ static int data[177][23]; A = data; } void func2(void){ B // 2次元配列のポインタのポインタの宣言 func1(C); }
- 184 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:31:48.22 ]
- >>181
知りたいのは、「2次元配列のポインタのポインタ」を引数に渡してアドレスを入れてもらう やり方です
- 185 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:43:35.47 ]
- @int*** value
A*value Bint** data C&data で、できると思うけど、何がやりたいのかは知らないし、あまりよくないコードな気がする。 やりたいこと書いて代案出してもらったほうがいいと思うけど、まあ、とりあえず。
- 186 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:53:39.40 ]
- ローカルstaic変数のアドレスを取るとかグローバルと大差ないわ
いや、グローバルはグローバルだって意識できるからまだいいけど これじゃあソレもできないから最低最悪だな
- 187 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 20:40:54.32 ]
- 静的なオブジェクト/動的なオブジェクト(free必要)
これ以上の情報を意識する必要はないし、意識しなけりゃならないのは最低最悪。 グローバル? 今時使わないよね。w
- 188 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 20:44:17.33 ]
- 質問
関数って引数は何個までとか何バイトまでにした方が良いってのはある? ある程度を超えるとメモリに積む作業が増えるので急激に遅くなる、とか。 大差無いのかな。
- 189 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 20:49:42.42 ]
- そんなことを気にするのはお前には早すぎるよ。
- 190 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 20:54:56.96 ]
- >>187
こいつ最高にアホ
- 191 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 20:59:26.69 ]
- >>189 初心者は速度を気にしちゃいけないなんて決まりがあったのか。
知らなかったわ、すまん。
- 192 名前:デフォルトの名無しさん [2012/02/07(火) 21:03:19.05 ]
- >>188
変数固めて構造体にして、ポインタで渡す 俺なら
- 193 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/02/07(火) 21:03:52.10 ]
- >>188
パフォーマンスへの影響は環境によるので実測しないとなんとも言えないけど、 計算量的によほど厳しい条件下でなければはっきりわかるような差は出ないよ。 回数が多く呼ばれる関数ならちょっとした差が全体に多きく影響することもあるけど、 どこまで許容できるかは程度問題なのでスパッと基準を決められるものではないな。
- 194 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:07:52.89 ]
- 問題になるまでほっときゃいい
腐りだしたら破棄して作りなおしゃいい ダしゃいいタマがうずくなら
- 195 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:09:28.84 ]
- >>191
決まりではないが鉄則ではある
- 196 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:10:39.31 ]
- >>188
大雑把に1KB以下なら気にしなくていい
- 197 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/02/07(火) 21:12:29.93 ]
- >>192
Windows API はそういう感じだね。 でも、その構造体だってどこかでメモリを消費するわけだし、 構造体に値を放り込むのだってゼロコストなわけじゃない。 同じデータをある程度何度も繰り返して渡すような状況ならいいが、 そうでないならパフォーマンスの差はほとんど出ないと思う。 バイナリ互換性を維持したまま構造体に要素を追加して拡張できる点で有利ではあるので、 長期的にインターフェイスを維持したいときには考慮に値する方法と言える。
- 198 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:19:43.77 ]
- こういうくだらん話しか出てこないから初心者は気にすることはないってこと。
|

|