- 1 名前:デフォルトの名無しさん [2010/06/30(水) 10:22:47 ]
- なぜポインタで引っかかる人が多いのか
引っかかる人は何に困惑しているのか
- 620 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 06:11:49.34 ]
- ___________
∧_∧∩ /先生!土曜日の早朝にそんなこと ( ´∀`)/< 考えるだけでなく、書込までするのは _ / / / \あまりにも不毛だと思います! \⊂ノ ̄ ̄ ̄ ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
- 621 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 06:32:33.92 ]
- >>620
懐かしいAAまで使って凝ってるなw そんなお前の方がよっぽど不毛だわ
- 622 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 10:19:21.16 ]
- 表記も分かりにくいけど
最大の問題点はC言語やそのライブラリが ポインタ酷使し過ぎなことだと思う ・参照型が使える ・参照渡しが使える ・文字列は、基本型もしくは構造体である ・配列は明示しない限り範囲外アクセス不可 始めからこのくらいやれば 半端な知識の人間がポインタに触れることはまずなかったはずだし 本当にアドレスを扱いたいとき以外ポインタ使わなかったろうから うっかりさんが大量発生することもなかっただろう C/C++以外にも確かDelphiとかポインタあるはずだが あんまりポインタで詰まるのを聞かない それは本当に滅多に使わないからだと思う
- 623 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 11:16:02.38 ]
- しかし、それをやったらCが何の為に作られたかがボケてしまう。
アセンブラの代わりに使える低水準言語でなくなる事は、本末転倒だと思う。 Cをそのように使いたいなら、C++でお茶を濁せばいいだけだと思う。
- 624 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 12:23:44.25 ]
- 参照こそイラン。
参照なんて結局んところ、[]演算子のオーバーロード時に使いたいだけちゃうんかと。 MyData &operator[](foo f)して、mydata[bar][baz]させたいだけちゃうんかと。
- 625 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 03:29:25.86 ]
- >>623
いや、当然C言語なんだから低水準なものは扱えるべきだよ。 何もポインタ自体を廃止しろと言ってるワケじゃない。 ポインタに依存するものが多過ぎるでしょ、って話。
- 626 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 03:47:38.83 ]
- 配列参照だとインデックスが必要
速度を上げるためのポインタ参照だから
- 627 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 03:53:03.71 ]
- Cが特定の人々にとって分かりにくいのは確かだけど
別にシステムプログラミング用途で不合理、不適合ってわけじゃないからな。 変えろとか言われても知らんがな。
- 628 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 03:54:49.92 ]
- つまりシステムプログラミング以外をする人は全部「特定の人々」なのか
実際は何故かプログラミングの教材にすら使われる言語なのだが
- 629 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 03:58:20.96 ]
- だからEasy Cだかなんだか好きな言語でっちあげろよ
ごね方が謎過ぎる
- 630 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 12:25:36.83 ]
- Joel氏の言う通り、この程度が理解できないならこの仕事するなって事だな
- 631 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 13:50:37.04 ]
- つまりアレだな、スレタイに対する回答は
「高級言語でもないものを、高級言語であるかのように扱ったから」 だな
- 632 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 21:20:11.12 ]
- >>631 もともと高級アセンブラだ
- 633 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 21:30:52.47 ]
- 実際には色んなところで使われちゃうから、そこが問題点
- 634 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 02:57:24.98 ]
- 引っ掛かる人間の割合は、さほど変わっていないと思う。
先天的に才能がない人間も、プログラミングをするようになっただけなんじゃね?
- 635 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 12:39:41.86 ]
- 先天的に才能が無い人間がいきなりCに触っちゃう機会があること自体がおかしい
- 636 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 18:54:12.21 ]
- Cってかっこいいの?
- 637 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 18:55:36.13 ]
- C△
- 638 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 08:05:24.62 ]
- Cが駄目ならGoを使えばいいじゃない。
- 639 名前:天使 ◆uL5esZLBSE mailto:sage [2011/07/04(月) 23:31:18.49 ]
- これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの? そうか、二度と話かけんなよ ゴミは何いってもゴミ
- 640 名前:デフォルトの名無しさん mailto:sage [2011/07/05(火) 02:37:31.17 ]
- 天使ちゃんマジ天使
- 641 名前:天使 ◆uL5esZLBSE mailto:sage [2011/07/06(水) 15:13:34.56 ]
- ∨∨∨
「「「「「 つまりアレだな、スレタイに対する回答は 」」」」」(キリ ∧∧∧∧∧∧∧∧∧∧(きリッッ!キリッッッッ!!きリッ!!!キリッッッッ!!!! ∨ 「「「「「 「高級言語でもないものを、高級言語であるかのように扱ったから」 」」」」」(←きリッッッ!!!!キリッッ!!!! ∧∧∧(キリ!!
- 642 名前:デフォルトの名無しさん mailto:sage [2011/11/11(金) 10:08:45.32 ]
- ポインタなんて出来るだけ使わなければ良い。
Cが出た頃の昔はポインタで高効率とかあったけど、 今のコンパイラなら最適化が優れてるから 無理に使う必要ない。 ワザと判り難いプログラミングの手本見て、 真似するとか低脳な教え手から習うなよw コンパイラがショボかった昔の技法なんだよ。
- 643 名前:デフォルトの名無しさん mailto:sage [2011/11/11(金) 14:31:23.82 ]
- クソ本が巷に溢れてるのが悪い
- 644 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 15:15:53.57 ]
- >>20
sizeof(b)=8; になるのは何で?bはint型だから4じゃないの?
- 645 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 18:25:06.21 ]
- すくなくともintじゃなくて
int *だわな。
- 646 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 18:26:17.39 ]
- アドレッシングが64BITの環境かもしれんし。
- 647 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 21:32:57.04 ]
- ポインタの理解に苦しむこと30年、その間書籍も20冊以上買ったが
全くモノにならなかった。 しかしついさっき、ようやく、ようやく開眼した。 ポインタ変数と、それが指し示すデータの実体を 同じメモリの中で考えるから位置関係が気になって混乱する。 メモリが一つで一直線にあるのではなく、 データ専用のメモリと、ポインタ専用のメモリが別々にあると 考えて、二つを並べることで理解できた。 つまり地面にメモリが二本垂直に突き立っているイメージ。 右のメモリにはデータがあり、 左のメモリにはポインタ変数があって右のメモリのアドレスを指している。 ポインタのポインタなら、三本めのメモリが立っていて 真ん中のメモリのアドレスを指している。 こんな簡単なことだったんだ。 人生が開けた感じ。とても清々しい気持ちだ。 次は構造体を頑張るぞ。
- 648 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 23:30:43.74 ]
- ポインタをインクリメントしてデータを破壊しても、原因が理解できなかったりw
30年もかかるんなら、プログラマに向いてねぇよ
- 649 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 00:14:24.98 ]
- ダメだこりゃ。
- 650 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 00:18:44.22 ]
- アドレスって名前はダテでは無いんだけどなー。
>>647の頭の中ではMapみたいにkey領域とvalue領域があるのかなー・・・。
- 651 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 01:12:04.93 ]
- 人が人生のすばらしさに目覚めて感動しているのに
相変わらず君らはレベルの低いレスを付けるのだな。 ポインタで引っかかる人は、みな私のように 頭の中にメモリのイメージを作れずに苦労しているのだよ。 二段メモリの概念は素晴らしい。これでポインタの本を書けるかも。 私を30年も苦労させたリッチーを、卒業祝いに一発殴りたいところだが 亡くなったそうだからチャラにしてやる。 これからはプログラムを作りまくるぞー。
- 652 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 08:33:39.67 ]
- いや30年わからないってそれ明らかに向いてないから
- 653 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 10:13:34.99 ]
- 俺の理解だと int *hoge; の場合、宣言してるのはhogeという変数。
*をつけると変数の中身をアドレスにしてアクセスする。アクセス先の型はintとする。 最初に*hogeはint型だが、*を外したらアドレスになる、と覚えようとしたら混乱した。
- 654 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 07:45:17.53 ]
- >>653
そこで多段メモリですよ。 以下のようにイメージすれば、ポインタなんて簡単だ。 先にも言ったとおり、初心者がポインタでつまづくのは、 リニアなメモリの中にデータとポインタが混在したイメージを 頭の中で処理しきれないから。 だったら、処理しやすいイメージに変えてしまえば良い。 実際のメモリ配置がコンパイラの実装に依存する以上、 このイメージが決定的にまずいということはないはず。 1.右のメモリにはデータがある 2.真ん中のメモリには1へのポインタ変数がある 3.左のメモリには2へのポインタ変数がある 4.ポインタ変数に付く*の数は、その変数のあるメモリの 何段前のメモリを見に行くかを示すものである
- 655 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 08:24:45.30 ]
- リンクドリストは要素の数だけメモリがあるのか。大変だな。
|

|