- 1 名前:デフォルトの名無しさん [2010/06/30(水) 10:22:47 ]
- なぜポインタで引っかかる人が多いのか
引っかかる人は何に困惑しているのか
- 342 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:11:05 ]
- >>337
前者 _s: dc.l __lbl __lbl: dc.b 'test', 0 後者 _s: dc.b 'test', 0
- 343 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:11:56 ]
- 引っかかりそうな所には近づかない・逃げるという方法もあるな。
scanfとか初期化式とかは、ポインタと少しは関係あるが、 関係ない部分で引っかかってる感じもする。 あまり関係ない所に全力でぶつかったり、教える側も全力で教えようとしていたら それは学習コストは高くつくに決まっている。 自ら望んで全力で引っかかるのは構わないが、 「なぜ引っかかることを望んだのか」を他人に問い詰めるのは迷惑だ。
- 344 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:26:25 ]
- >>341
まず童貞を捨てる。
- 345 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:55:12 ]
- char *s="test";
sprintf(s,"Hello world"); 正常に動くようですがこのまま使って大丈夫でしょうか?
- 346 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:57:49 ]
- はいはい、ネタは自分の頭の中でやってくれ
それが嫌なら窓を捨ててペンギン村にようこそ
- 347 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 13:00:39 ]
- >>345
だめです。 というより char *s = "test"; という使い方はほとんどしないから忘れてもいいかと。
- 348 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 13:07:40 ]
- const char *s = "fuck me please!!"
ならいいよ
- 349 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 13:39:11 ]
- そこはfackだろ
- 350 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 14:12:44 ]
- >>345
char *s="test"; *s="Hello world"; でいいじゃん
- 351 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 15:00:55 ]
- s="Hello world";
- 352 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 15:11:27 ]
- 配列は関数に渡すとポインタに変換される
ポインタはprintfされるとアドレスに変換される 暗黙に二度の変換を受けるという理不尽な仕様
- 353 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 15:24:41 ]
- おいおい。
全て間違ってる。
- 354 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 16:13:29 ]
- #include <stdio.h>
int main(int ac, char **av) { char *a = "test"; char *b = "test"; char c[] = "test"; char d[] = "test"; printf("%d\n", a == b); printf("%d\n", c == d); printf("%d\n", a == c); c[0] = 'C'; printf("%s\n", c); try{ a[0] = 'A'; printf("%s\n", a); }catch(...){ printf("catch\n"); } return 0; } どうしたら Segmentation fault を出さないように出来ますか?
- 355 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 16:16:22 ]
- cでtrycatchとかありえない
- 356 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 16:19:02 ]
- ポインタは変数のある場所を指している(キリッ)って説明がわかりにくい
「指してる」ってなんだ?と思ってた はじめにscanfや関数の引数としての使い方から説明するから単体での理解がしにくい アドレスを格納する変数ならそう言って欲しい。分かりやすくしようとしてわかりにくくなってるよたぶん あと変数宣言の説明を軽くスルーしたり、ポインタをポインタ型とかint*型とか言わないのも問題な気がする ポインタだけ特別枠の別物みたいにみえる プログラミング習いたての人との共通認識を探ろうとしないのも分かりにくさに拍車をかけてる 難しいんだよー、だから分からなくても仕方ないんだよー、俺のせいじゃないよーってか 分からせる気ないだろうと
- 357 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 16:41:32 ]
- 英語で言えば
ある場所を指している=ポインタ だからな ポインタは変数のポインタ(キリッ) じゃ判らん罠
- 358 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 16:50:14 ]
- 再帰的定義だよ
- 359 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 16:51:40 ]
- ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
ポインタ (pointer)とは、あるオブジェクトがなんらかの論理的位置情報でアクセスできるとき、 その位置を表現する変数の事をいう。有名な例としてはC/C++でのメモリアドレスを表すポインタが挙げられる。 なるほどなるほど〜
- 360 名前:359 mailto:sage [2010/07/11(日) 17:00:11 ]
- >>359
変数って書いてあるけど、値のことだよね。 ポインタとは、オブジェクト(≒変数)の位置を表現する値を指す。 C/C++ではメモリアドレスを使用するのが一般的。 ポインタに対して演算を行うことにより、オブジェクトを取得したり、 またオブジェクトに隣接する位置のオブジェクトのポインタを 取得することができる。 ああ、こう書いちゃうと分からないんだよなあ。 やっぱ箱のポンチ絵無しには説明は無理だわ。 で、更に変数宣言がどういうものなのか書こうとすると rationaleとか持ってこないと荷が重い。
- 361 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 17:02:11 ]
- だからアセンブラに落とせば一発だっつーのに
- 362 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 17:03:07 ]
- アセンブラにCみたいな複合型ねーだろ。
- 363 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 17:03:12 ]
- ワロタw
結構いるよね、ほのめかしはするけど実は答え知らない自称上級者
- 364 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 17:04:01 ]
- >>362
ある夜
- 365 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 17:05:31 ]
- >>364
値の出し入れ以外に まともな文明の利器があったなんて知りませんでした。 もちろん人が解釈するものじゃないよね? きちんと文法なんだよね?
- 366 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 18:35:29 ]
- ポインタはクイックソートをする為だけにある。
それ以外の用途では不要。
- 367 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 18:38:49 ]
- >>366
おまえ楽な仕事なんだな
- 368 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 18:43:51 ]
- >>360
ポインタと言った場合、ポインタ型のことか、 ポインタ型の変数のこと。 値はアドレス
- 369 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 19:32:13 ]
- クラスメンバへのポインタで質問です
class Inner{ pubilc: void hogehoge(); int fugafuga; }; class Base{ public: Inner *in; void hoge(); int fuga; }; Base b;としたとき b.hoge は &Base::hoge b.fuga は &Base::fuga b.in は &Base::in でいけると思うのですが b.in->hogehoge b.in->fugafuga 相当のアドレスを得るにはどうしたらいいのでしょうか?
- 370 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 22:22:12 ]
- C++ちゃんと知らんけど
「いけると思うのですが」の時点で いけてないことないか?
- 371 名前:デフォルトの名無しさん mailto:sage [2010/07/11(日) 23:57:30 ]
- 普通に&Inner::hogehogeじゃダメなの?
- 372 名前:デフォルトの名無しさん mailto:sage [2010/07/12(月) 00:13:22 ]
- でいけると思うのですが
- 373 名前:デフォルトの名無しさん [2010/07/17(土) 08:34:26 ]
- ぬるぽ
- 374 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 11:21:28 ]
- ポインタはすんなり理解できたけど「逆参照」だけはずっと意味不明だった。
なんだよこの訳語は。
- 375 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 11:57:59 ]
- デリファレンスでいいだろ
- 376 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 12:28:15 ]
- 俺なら訪問と訳して全国のポインタ脱落組を3000人くらい救っていたな。
- 377 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 13:30:16 ]
- 入門書の間違いなんて、たまたまそれに嵌って痛い目にあったりでもしない限り、
いちいち覚えちゃねえよ。 複数言語やってりゃ、記述が間違っていても何となく回避してるし。 子どもの時に乗った三輪車の善し悪しなんぞ誰もわからんのと同じ。 ぐだぐだ言うのは、三輪車をとっかえひっかえしている池沼と、書いた著者くらいのもん。
- 378 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 14:44:43 ]
- それはそうかも
- 379 名前:デフォルトの名無しさん mailto:sage チラ裏スマソ [2010/07/17(土) 14:57:17 ]
- >>375
デリとな
- 380 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 18:26:10 ]
- >>377
複数言語やってても、そこにポインタ扱う言語が無かったらやっぱ引っかかるよ
- 381 名前:デフォルトの名無しさん [2010/07/17(土) 21:35:13 ]
- >>373
Javaじゃないからガッしてくれないよ
- 382 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 22:55:15 ]
- スマポで引っかかりました。
詳細は以下から。 class Dog : public IAnimal というクラスがあって、これをスマポでインスタンスを生成すると void fanc(IAnimal animal) に入れられなくなります。 どう書けばいいんですか?
- 383 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 22:57:19 ]
- >>380
間接参照の概念さえあれば大体何がやりたいのかは分かる
- 384 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 23:00:17 ]
- >>382
そのスマートポインタをデリファレンスすれば委員で内科医? 言語が判らんから具体的には答えられないが。
- 385 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 23:12:08 ]
- >>382
アセンブラやればわかるようになる
- 386 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 23:12:10 ]
- C++(VC10)です
↓こういうふうに書いたら駄目なんですか? 何で入らないのかわかりません std::shared_ptr<IAnimal> dog_ptr(new Dog());
- 387 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 23:16:15 ]
- >>386
ポインタを実態を必要とする関数に渡したいなら、>384の言うように逆参照すればいい。 もしかして、単項*演算子も知らないのか?
- 388 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 23:18:59 ]
- >>382
auto_ptr<Dog> p(new Dog()); func(*p);
- 389 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 23:54:24 ]
- うーん何言ってるかよくわからないのはポインタを避けて通ってるからなのですかね
とりあえず.get()って付けたら入りました func(dog_ptr.get()); 全く意味わからないですが急場しのぎって感じで満足してます やっぱもってるなってことで
- 390 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 00:01:10 ]
- その程度で満足できるんなら勝ちでいいよ
- 391 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 00:37:28 ]
- >>389
メモリの絵を描いて理解するんだ。
- 392 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 00:54:50 ]
- たとえばK&Rは第5章がポインタで第6章が構造体だが
ポインタは避けるが構造体 (クラス) は避けないって感覚は異常だよ ふつうに考えるとポインタよりもクラスのほうが難しいはずだよ なぜか知らないがクラスが難しいと言うのは恥ずかしい ポインタが難しいと言うのは恥ずかしくないという空気に支配されている気がする
- 393 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 02:43:01 ]
- 知らんがな
- 394 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 03:00:05 ]
- 何かあるとK&Rという空気に支配されている気がする
- 395 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 03:11:20 ]
- 3連休だしプログラミングの勉強しようぜ
ttp://tsushima.2ch.net/test/read.cgi/news/1279349199/
- 396 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 07:46:40 ]
- >>392
ポインタのほうが構造体よりずっと難しい ポインタは存在しないオブジェクトを指す可能性があるし、表記が複雑になる 構造体のほうが難しいと勘違いするのはポインタを理解していないからだ
- 397 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 11:21:38 ]
- 逆をいえば、存在しないオブジェクトを指さなくて構文が複雑にならない
ようなポインタなら問題ないんだよな JavaやPythonの間接参照に引っかかるようなヤツはそうそうおるまい
- 398 名前:289 mailto:sage [2010/07/18(日) 14:02:41 ]
- ポインタ難し・・・・^^;
- 399 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 15:27:09 ]
- ポインタや構造体のどこが難しいのか理解できない。
Win32APIのほうがよっぽどマンドクセ。
- 400 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 15:32:39 ]
- %pに細工して
printf("%p", p)の出力を 〒100-0014 東京都千代田区永田町1丁目7−1 とかにすればイメージ沸きやすいと思う。 アドレスと値を同列に扱えてしまうのがコンピュータの強みでもあるが 混乱の基なんだよ。
- 401 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 16:42:46 ]
- 哲学的な話になりそうだなw
- 402 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 21:56:05 ]
- もう黙ってアセンブラから入るしかないのでは?
というか、我々の頃は、ちょっと言語がわかるようになったら、自然とそうなっていたような気がするのですがね。
- 403 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 22:05:16 ]
- ポインタは間接参照を表現するものとしては
無駄の多い構文になってるのがアレなだけで こういうアプローチ以外は不可能ってほど難しいものじゃないだろ アセンブリなんてしなくてもよろしい
- 404 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 22:40:32 ]
- そんなものやって役に立つの?
- 405 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 22:41:51 ]
- アセンブリは知らなくても良いけど、メモリ上でプログラムが
どうやって動いてるかの概要ぐらいは分かってないと、 ポインタまわりのデバッグはやりづらいね。
- 406 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 23:20:21 ]
- >>403
無駄が多いと感じる原因は「型」。 メモリ上には型がない。なぜなら必要ないから。 型がなくてもプログラムが動くことが分かれば、 ポインタが (構文の見た目ほどには) 難しくないことが分かる。
- 407 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 23:32:56 ]
- >>406
そのような「型の必要がない」という事実を体験するには、アセンブラをやるのが手っ取りばやい、と。
- 408 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 23:39:29 ]
- byte, word, dword, qword ...
- 409 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 00:21:35 ]
- >>408
masm か‥‥‥。
- 410 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 00:28:08 ]
- masm は構造体も使えたな
- 411 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 04:25:48 ]
- メモリアドレスを指す、参照でしょ?
- 412 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 19:19:38 ]
- ポインタで引っかかるのはC言語のせいだと思う
Cって、ポインタ依存度高過ぎる上に そのポインタの扱いがフリーダムだからなぁ… ポインタ依存度低めで、扱いがそこそこ厳しめなDelphiだと ポインタで引っかかった経験はあまり無いぞ
- 413 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 20:28:28 ]
- Delphi って ObjectPASCAL だろ
- 414 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 20:36:46 ]
- TurboPascal for Windows
- 415 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 20:45:45 ]
- >>412
えーと、つまりポインタ自体の概念は難しくない。 そこに掛かる、文法や、派生概念が捕らえ方を 面倒にしてる。 ってこと?
- 416 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 20:58:11 ]
- >>415
そんな感じかな? 例えば、C言語で 「純粋な参照渡し」が使えたり ポインタに厳格な型があって明示的なキャストをしたとき以外では互換性が無かったり 文字列型をコア機能として持ってたり 動的配列をポインタを使わず使えたり ポインタを利用するような標準ライブラリがそもそもほとんど無かったら? 本当にメモリを扱いたい時にしか使わない概念になってたら ポインタで引っかかる人は相当に少なかったと思う
- 417 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 21:19:25 ]
- 配列か…
配列の制限の多さにビビッタ覚えがあるなぁ。 配列を返すためにも、ポインタを使うんだよ。 と、師匠に言われて、俺の価値観が崩壊した。
- 418 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 22:28:12 ]
- >>415
typedef使えばすっきりするからやってごらん
- 419 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 22:39:10 ]
- もともとアセンブラで書いてた人用の物だから仕方ないね
- 420 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 23:03:57 ]
- たしかにポインタの概念自体は馬鹿でも理解できるものだと思うな
- 421 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 18:16:50 ]
- >>416
C#のアンセーフポインタみたいな感じ?
- 422 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 21:07:04 ]
- 俺はそのアンセーフポインタとやらを詳しくは知らんが
要は本当にメモリアドレスを扱う以外には使う必要がないってことか? だとしたらまあそこそこ合ってるかな ポインタ自体も出来る限り安全であるべきだとは思うが
- 423 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 21:31:43 ]
- 今となっては、安全でないところが、Cのポインタの利点だからなぁ・・・
- 424 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 22:29:23 ]
- Cはポインタのせいで最適化がしづらくなっている。
バグもでやすいしね。 一番いいのはCを使わないことだ。
- 425 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 22:35:46 ]
- 低レイヤー向けの使いやすい言語を作ろう。
って話はないのかな。
- 426 名前:デフォルトの名無しさん mailto:sage [2010/07/20(火) 23:28:34 ]
- LLVM。
- 427 名前:デフォルトの名無しさん mailto:sage [2010/07/21(水) 05:13:38 ]
- >>425
Cがあるじゃん
- 428 名前:デフォルトの名無しさん mailto:sage [2010/07/21(水) 17:54:38 ]
- >>424
ほとんどの言語はヒープのせいで最適化しづらい。 バグがいやなら、一番いいのは最適化を諦めることだ。
- 429 名前:デフォルトの名無しさん mailto:sage [2010/07/22(木) 21:24:53 ]
- ぼっとんネタ
www.atmarkit.co.jp/news/200909/07/lltv02.html
- 430 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 03:21:12 ]
- >>427
Cの領域にGoが侵食し始めてるな。 あと5年もすればC?なにそれ?Cobolとかいうやつ?みたいな扱いになるよ。
- 431 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 10:48:10 ]
- カーネルの実装やらC++がいる時点でそれはないわwww
業務開発ではもうC使わないけどな
- 432 名前:デフォルトの名無しさん mailto:sage [2010/07/23(金) 11:12:28 ]
- >>425
Dがあるじゃん
- 433 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 23:15:08 ]
- ポインタのポインタのポインタで初めのポインタに繋がったらどうなるの?
- 434 名前:デフォルトの名無しさん mailto:sage [2010/07/28(水) 01:14:47 ]
- 普通は型エラーになるよ。
- 435 名前:デフォルトの名無しさん mailto:sage [2010/07/28(水) 02:43:48 ]
- 元彼の元彼の元彼で初めのエイズに繋がったらどうなるの?
- 436 名前:デフォルトの名無しさん mailto:sage [2010/07/28(水) 03:27:36 ]
- アッー!
- 437 名前:デフォルトの名無しさん mailto:sage [2010/07/30(金) 05:16:26 ]
- ご冥福をお祈りします
- 438 名前:デフォルトの名無しさん mailto:sage [2010/07/30(金) 19:26:59 ]
- int hoge(int a[10])
{ int b[10]; return *a; } aはポインタなのにbは配列 ポインタと配列は似ているとかいう解説にかなり混乱したもんだ スタック・ヒープ・文字列あたりがメモリのどこに確保されるかも 一緒に覚えないとポインタはいつまでたっても和歌ランと思う
- 439 名前:デフォルトの名無しさん mailto:sage [2010/07/30(金) 20:02:39 ]
- この10とかも飾りだしなぁ
- 440 名前:デフォルトの名無しさん mailto:sage [2010/07/30(金) 20:31:36 ]
- 仮引数に[数字]使ってもいいけど、
それが許されるのは配列へのポインタとかだな。 要するに可変長配列とか多次元配列の要素とか。
- 441 名前:デフォルトの名無しさん mailto:sage [2010/07/31(土) 08:01:22 ]
- しなくていい(実際の業務では必要ない)表現のフェイクが多すぎて混乱してるだけじゃね?
配列は領域が単に連続してるだけで先頭だけみたらポインタ 違うとかそういうもんじゃなくて比べられないだろ ポインタの指す先が問題なんであって・・・ mallocでとった領域だって連続してるし char *p = (char*)malloc(sizeof(char)*100); char p[100]; とかどう違う?とか聞いたらまた混乱してしまうんだろか?w こんなもんの違いなんてそう意識することないと思うけどねw
- 442 名前:デフォルトの名無しさん mailto:sage [2010/07/31(土) 08:05:41 ]
- Cのよいところはポインタを無駄にちりばめすぎてて
理解してないとろくなコードをかけないところだな。 ASSERT(ポインタを理解している);と先頭に書いてあるようなもん。 中には五里霧中なままコード書いて金もらってる猛者もいるけどさw
|

|