ポインタはどうやって学ぶべきか part2 at TECH
[2ch|▼Menu]
44:デフォルトの名無しさん
08/07/28 18:52:42
突っ込むのもめんどくさいから放置

45:デフォルトの名無しさん
08/07/28 20:02:35
アセンブラでポインタに対応する概念は間接参照でしょ。
だからといって別に間接参照ばっかじゃないし。

46:デフォルトの名無しさん
08/07/29 05:56:14
>>33
そこでちょいと疑問なんだが、Javaでぬるぽが出るのは何故なの?Javaはポインタが不要だから?

47:デフォルトの名無しさん
08/07/29 06:47:26
今年の夏は例年を上回るレベルの低さだなあ。
>>46
クラス名になんで「Pointer」という語を含むのかは知らんが
NullPointerExceptionの発生要因にポインタ云々はこれっぽっちも関係ない。
null変数を参照したってだけだ。

48:デフォルトの名無しさん
08/07/29 11:16:41
ポインタなんて無くても何とかなるのだが、2008年になって1970年代の言語の仕様の議論をしてもしょうがないだろう。
cの欠点のいくつかは、開発された当時、現実的なコンパイル速度と実行速度を維持するために
あえて修正せずに仕様としたものだからな。
関数プロトタイプもそうだし、ポインタもそうだ。auto変数を初期化しないのも。

で、今学習する人に対して、ポインタが要るかどうかだが、
「ターゲットハードウェアがcしかサポートしていない」なら要るだろう。
cでポインタ無しでプログラムを書くのは効率が悪すぎる。
しかし、「C++&STLとか、javaが使える」なら学習する必要はないと思う。


49:デフォルトの名無しさん
08/07/29 11:38:19
C++使うなら、STLを使用するかどうかに関わらずポインタは避けようもない。

50:デフォルトの名無しさん
08/07/29 11:40:01
auto_ptrなりiteratorなりを使えば、割と安全に使えるけどね。

51:デフォルトの名無しさん
08/07/29 11:47:19
>>49
避けられない例とやらを挙げてくれよ。C++はcとは違って参照がある。STLを使えばstd::stringが使える。
ポインタを一切排除したプログラミングも可能だと思うけどね。


52:デフォルトの名無しさん
08/07/29 11:54:19
>>51
取り敢えずこの辺。
スレリンク(tech板:57番)
2,3は参照で済むし1,4は>50だけど。

53:デフォルトの名無しさん
08/07/29 12:00:08
ふつーC++でもちょっとしたフレームワークのお世話にはなるわけで
そのクラスライブラリ群をポインタで扱う事は多々有る。


54:デフォルトの名無しさん
08/07/29 12:32:57
>>52
>1. 配列を関数に渡す際にどうしても必要
std::vectorを参照で渡せばよい。

>2. 構造体を関数にコピーレスで渡したい際にどうしても必要
オブジェクトを参照で渡す。ついでにconstで渡せば壊されないで済む。

>3. 別関数内の変数の値を変更したい際にどうしても必要
変数を参照で渡す。

>4. メモリを動的に確保する際にどうしても必要
まあ、強いて言えばこれかなあ。でもこれとて、たった1個のオブジェクトを確保するならnewが要るけれど、
消えものならautoでいいから、親に返すときとかにしか使わないよなあ。
複数個のオブジェクトならSTLコンテナを使えば動的に拡張できるから、「どうしても必要」な例がすぐに思いつかないな。

>5. 特殊なデータ構造を実現する際にどうしても必要
これじゃ説明になってないよママン

55:デフォルトの名無しさん
08/07/29 14:22:33
C++でポインタを避けられない最大の要因は、なんと言ってもC向けの低水準なAPIだろ。
次にMFCのような古臭いフレームワーク。

話逸れるが、そういうAPIを使えることもC++の利点だとは思うけど、
Javaやスクリプト言語のような高水準のライブラリがもっと標準でほしい。

56:デフォルトの名無しさん
08/07/29 14:40:07
C++ でポインタを避けられない状況はあるぜ。
ある変数への参照をメンバに持ちたい場合、
その参照先を初期化時から変更しないのであれば参照で持てるが、
参照先を途中で変更したい場合はポインタにせざるをえない。

57:デフォルトの名無しさん
08/07/29 14:41:24
あと、配列を引数に取りたい場合も、
実際には全ての配列を std::vector にするわけにもいかんので
std::vector への参照を引数に取る関数ばかりを使うこともできない。

58:デフォルトの名無しさん
08/07/29 14:51:08
>>55
> Javaやスクリプト言語のような高水準のライブラリがもっと標準でほしい。

Java って C/C++ に比べて高水準なライブラリそんなに多かったっけ?
Java も使うけどむしろライブラリが少なくて C++ 選ぶ場合も
多いんだけど。

標準だけでは少ないかも知れないが、標準だけでカバーしようとは
しないというのが C からの方針。標準だけに限るとあまり意味ないのでは。

標準に限らなければ C/C++ は内容が高水準なライブラリが多い。
API とかはイマイチのものもあるかもしれんが、外見よりは内容が
重要だと思うよ。

59:デフォルトの名無しさん
08/07/30 12:31:32
>>58
スレッドとかソケットとかはC++標準で欲しいよ。
標準だといろんな処理系で使える(可能性が上がる)。
そこが良ければBoostでもなんでもいいんだけどね。

60:デフォルトの名無しさん
08/07/31 04:13:00
別に boost でいいと思う。
どうせ結局使えない環境では使えないだろうし。

61:デフォルトの名無しさん
08/08/06 21:15:48
Cは歴史があるから
ネットを探せばライブラリは
ゴロゴロ転がってる

62:デフォルトの名無しさん
08/10/26 01:42:10
3

63:デフォルトの名無しさん
08/10/26 01:45:01
C++は(newがポインタ返すから)ポインタを避けるのは難しい

64:デフォルトの名無しさん
08/10/26 02:01:34
490 名前:名無し検定1級さん 投稿日:2008/10/26(日) 01:59:26
高度な3Dゲームといえば
グランツーリスモのプログラマは(最低年収800だか1000だか)
C/C++/ASMでの募集だったな。


491 名前:名無し検定1級さん 投稿日:2008/10/26(日) 02:00:51
グランツー
URLリンク(www.polyphony.co.jp)


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5384日前に更新/24 KB
担当:undef