- 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/
- 162 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 16:46:10.86 ]
- 実は本当は8つ提出してなくてぶっちゃけAとかどうでもよくて
単位が貰えるか不安だったけど安心した俺内野手
- 163 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:01:57.43 ]
- >>159
「単位をくれる」なのか「単位が貰える」なのか つか前提ってすごいな。最近の大学はそんなもんなのか? >>162 教授次第だけど1/3以上未提出なら普通はDになるんじゃないかな
- 164 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:02:21.17 ]
- むしろ全部提出してる奴は少ないからな。必修なら落とされないと思う。
- 165 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:10:40.98 ]
- そういや私の通ってた大学も(頭が)足りないやつは追加提出させられてた気がするな
必修ならほぼ落とすことは無いか
- 166 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:25:23.02 ]
- 選択がないので1つでも落すとアボン。
- 167 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:31:58.14 ]
- 落とされない大学なんぞに意味はないな。
- 168 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:57:20.43 ]
- 情報系じゃなかったけど
レポート半期で12本初回抜き打ち試験中間試験定期試験とか当たり前のようにやって 全部提出出席しても試験でしくじって落とされるやつがちらほらいて地獄絵図だった 後輩にはうちの大学には絶対に来るなと忠告したよ
- 169 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 18:34:08.84 ]
- 何の為に大学に行ってるの?
- 170 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 18:35:02.15 ]
- 行かないと社会が人間扱いしてくれないからとりあえず
- 171 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 18:43:35.47 ]
- >>168
普通だろそれ
- 172 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 18:53:04.52 ]
- 必修だから落とされないとか、そんな世の中なの?
- 173 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 18:59:29.22 ]
- 関数func()内で
int data[177][23]が定義されており、データが関数内で入れられるとします。 この関数の外から、2次元配列のポインタのポインタを渡し、int data[177][23]のアドレスを引数で返したいのですが、 void func( @ ){ int data[177][23]; A = data; } void func2(void){
- 174 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:01:40.10 ]
- 失礼しました。途中で送信してしまったようで・・・
改めまして 関数func()内で int data[177][23]が定義されており、データが関数内で入れられるとします。 この関数の外から、2次元配列のポインタのポインタを渡し、int data[177][23]のアドレスを引数で返したいのですが、 void func1(@){ int data[177][23]; A = data; } void func2(void){ B // 2次元配列のポインタのポインタの宣言 func1(C); } @〜Cの記述は、どの様にしたらよろしいでしょうか?
- 175 名前:174 mailto:sage [2012/02/07(火) 19:03:24.76 ]
- int data[177][23]の実体はfunc1()が持ち、
他の関数からその中身を参照にしたいのです(グローバル変数使用不可) 宜しくお願い致します。
- 176 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:06:05.04 ]
- > 関数func()内で
- 177 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:07:47.55 ]
- mallocを使うか根本的なところから見直す
- 178 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:15:15.24 ]
- void func1( *(*pArray)[23]){
int data[177][23]; *pArray = data; } void func2(void){ int *pArray[177][23]; // 2次元配列のポインタのポインタの宣言 int ans; func1(pArray); ans = pArray[0][0] + pArray[176][22]; } イメージとしてはこんな感じですが、もちろんこれでは上手く行きません・・・
- 179 名前:174 mailto:sage [2012/02/07(火) 19:17:27.61 ]
- int data[177][23]をグローバルに持って行ければ全然問題ないのですが、
事情があって、それが出来ないのです・・・ ※私に与えられてる権限としては、func1の引数の変更、func2の製作
- 180 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:18:57.51 ]
- ゴミコード発生の瞬間である。
- 181 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:20:25.28 ]
- やりたい事がさっぱり分からん
エスパー待ち
- 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 ]
- こういうくだらん話しか出てこないから初心者は気にすることはないってこと。
|

|