[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 19:54 / Filesize : 171 KB / Number-of Response : 914
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ポインタはどうやって学ぶべきか



1 名前:デフォルトの名無しさん [2007/10/24(水) 04:07:56 ]
なんと!意外にもスレが無かったので立ててみました

先日のソフトウェア開発技術者試験午後UのB木のポインタ表現
近年の基本情報技術者試験の午後C言語問題の自己参照構造体
など物凄く出来が悪いです。

ゆとり?文系?自作減少?
ブラックボックス化されてメモリ管理やコンピュータの細かい知識が不要となった?

本当にポインターは必要なのか!?議論しましょう

520 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:37:37 ]
アドレス演算なんかあってもしょーがない

521 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:47:47 ]
しょうがないというかJavaにはその概念がないんだからできなくて当然だ。

522 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:33:43 ]
できないからやれないのとできるけどやらないのとの間には越えられない壁がある

523 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:39:01 ]
できないけどやるやつが始末悪い

524 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 07:01:35 ]
言語仕様上可能だからってやるやつも始末悪い

525 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 08:10:57 ]
Cでは明示的なアドレス演算がないとプログラムが書けないだけのこと。

526 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:49:27 ]
Cを10年やってきた俺が断言しよう。
ポインタのないC#が理想系にもっとも近い。
C++のように氾濫するライブラリを使いこなすためにキャストの嵐もないし。

527 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 13:05:36 ]
俺もそう思うー

528 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 13:10:45 ]
C++を10年やってから言ってください^^



529 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 13:12:10 ]
aho

530 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:18:08 ]
C++も2〜3年はやってるがこんな扱いづらい言語はないよ。
自分で一から作るならいいけど、実際の現場じゃ色んな人が触ったソースも
見なきゃならないわけで、当然のように色んなライブラリが使われてる。
次から次へと覚えることが多すぎてヘボな俺の頭はついてけないぜ。

あとC++は文字列だけを見てもCString、std::string、System::String*、TCHAR*、WCHAR*、
CAtlString、BSTR、CComBSTRなどなど。おぞましいほど多様な形態がある。

C#だと、ほぼstring型で統一されてるだがなぁ。

C++は使い古されてもうカオス状態。言語としては何でもできる良い言語だけど
俺はもう嫌だ。ボスケテー

531 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 18:54:21 ]
>>おぞましいほど多様な形態がある。
それはC++のせいではない。
そこの区別がつかないようでは(略

532 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:00:49 ]
CLI(笑)


533 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:26:42 ]
C++は

534 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:38:54 ]
その中でC++の文字列型と言えるのはstd::stringだけじゃねぇ?

535 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:56:17 ]
まぁ C++ は歴史も引きずってて自由でやり放題だからな…
自分でさらっと書くのには Java とかより楽で好きだけど、
他人のコードには手を入れたくないな。

536 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:32:12 ]
おまえのも他人からそう思われてるよ

自分のが一番綺麗だと思ってるうちはまだまだ未熟



537 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 22:04:30 ]
そういうカオス領域の扱いに長けているのがC++だと思っている。

538 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 22:28:55 ]
>>536
別にきれいだと思っているとは書いていないよ。勉強して努力はしているが。
できるだけ自分で責任を持って直したいと思ってる。



539 名前:デフォルトの名無しさん [2007/11/29(木) 22:36:54 ]
ポインタと関係ないですが

540 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:39:03 ]
趣味でオナニープログラムして楽しむならC++だな。
仕事では、使いたくねぇ

541 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:52:10 ]
>>539
ポインタを語るスレではないからな
そもそも学びたい奴がいないならこのスレいらんだろ
ポインタがわからんやつとかいないじゃん

542 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 13:07:43 ]
ポインタをどうやって学ぼうかってスレなんだから
ポインタわかんない人も来るだろw

543 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 17:01:39 ]
ポインタ勉強中でなんとなく面白くなってきた

関数は常に値渡し
参照渡しでも結局はアドレスと言う値を渡してるに過ぎない
って認識であってる?

544 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 17:06:45 ]
うん

545 名前:デフォルトの名無しさん [2007/11/30(金) 19:29:27 ]
C言語は値渡ししかできない、でいいんですよね?

546 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:34:13 ]
今更Cやポインタなんて勉強してるやつはバカだろw

言語なんて勉強する意味がない。
コーダーは中国から買ってくれば良い

547 名前:デフォルトの名無しさん [2007/11/30(金) 19:38:14 ]
そうして中国に追いつかれることに気付かない日本人。
私は自分のためにCやポインタを勉強する。

548 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:40:59 ]
お前がバカなんだっつの



549 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:41:40 ]
まともなコードが書けない奴が、まともな設計できるわけねえし

550 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:43:55 ]
他にも勉強する事が多くてなぁ・・・
まともなコードが描ける頃には髪の毛白くなってそうだよ

551 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:47:09 ]
コード書きは全てに優先するんだよ
無知か?おまえ

552 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:48:00 ]
なかなか粗悪な暇の潰し方だな

553 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:02:31 ]
職人みたいに低能頑固薄給視野0になりたければ
コード書けばいいと思うがなw

コーダーなんてインドから集めてくればいい

554 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:04:25 ]
コーダ以外コード書く必要ないと思ってる化石か

555 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:05:04 ]
マ板でどうぞ

556 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:20:07 ]
GoogleやMSの社員もコード書いている件について

557 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:41:59 ]
マネージャクラスでもな

558 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:43:34 ]
それが普通



559 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:47:34 ]
じゃあなんで日本のマネージャクラスはコード書かないのが多いの?
なんで日本の文化ではコード書きは底辺がすることって信じられてるの?

560 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:52:06 ]
typedef void* NULL;

#define NULL 0

561 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:58:37 ]
>>559
それが一番妥当かつ効率性が高いとう結果
なんだよ。結局コードなんて書いても成果を
出しましたって小細工しているにすぎないからな

562 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:01:24 ]
日本語で

563 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:07:28 ]
>>556-558
書くモノしか見てないけど Google とか技術部いい感じだよね。
Norvig さんとか。

564 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:23:07 ]
いい感じじゃねーだろ

565 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:39:04 ]
英語身に着けて外国でもなんでもいけばいい。
コードも書けない奴の言うことなんて誰もきかない。

566 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:49:30 ]
視野が狭すぎてすげーなw

567 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:08:53 ]
昔と比べてコードの抽象度が高いから、自然言語を使う必要性が減ったってことでしょ
コーダにコーディングをアウトソースするときに、インプットとして「コード」が必要になったってこと
昔と大して変わってない

568 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:25:48 ]
今日帰りにインド人がやってるカレー屋に行ったんだけど、
カレー注文したらスプーンがついてこなくて
「あ、本格的な店なんだ」とか思って手で食ってたら、
半分くらい食ったときに、インド人の店員が奥から
すげー申し訳なさそうな顔してスプーン持ってきた



569 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:34:53 ]
>>568
おもしろいコピペがあったら貼るスレinマ板part4
pc11.2ch.net/test/read.cgi/prog/1194955716/l50

570 名前:デフォルトの名無しさん [2007/12/04(火) 15:03:58 ]
>>128

571 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 17:44:08 ]
>>128
が改悪したようにしか見えない件についてw

572 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 21:58:52 ]
うおおぉぉ!
Javaばかりでプログラム組んでいてC++にに戻ってきたらメモリ管理だるすぎて泣きそうだw
Javaはメモリ管理が楽だからいいよな
よくC#、Javaはポインタがなくて良いとか言う奴いるけど、これらの言語の利点はメモリ管理の楽さだろと突っ込みたいぜw
それにC#、Javaはむしろポインタの固まりだしな

C++のメモリ管理の経験があると、ガーベジコレクション等に負担をかけず高速なプログラムを組めることが身に染みてわかったぜ、自動解放だからってテキトーに組むとメモリリークは発生しないにしろ遅いなw
結論、C++のようなメモリ周りがシビアな言語をやる価値は今でも十分すぎるほどあると

573 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 22:40:35 ]
C++ならスマートポインタ使えばいいのに

574 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 22:52:08 ]
違う違う。

C++ならスマートポインタ実装すればいいのに

575 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 07:28:30 ]
俺は、自分でメモリ管理しないと、不安でしょうがない。
JavaやC#だと、本当にリークしてないのか不安になってたまらない

576 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 13:56:30 ]
aho

577 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 15:47:48 ]
GUIでガベコレの遅延がはっきり感じられるとつらいね
元々もっさりなのに時々かくかくではストレスもたまる

578 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 16:24:29 ]
なんでそうなるコードを書くの?



579 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 17:21:57 ]
リソース管理が自動化されてる言語しかやったことがない、とか

580 名前:デフォルトの名無しさん [2007/12/13(木) 16:16:38 ]
int array[10];
で&arrayってvoid*?

581 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:52:14 ]
int**

582 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:04:52 ]
自己レス
int (*)[10]か。

>>581
あれ?それでもいいの?
試してみます

583 名前:デフォルトの名無しさん [2007/12/13(木) 17:13:53 ]
配列のポインタと、ポインタのポインタを間違えるな

584 名前:582 mailto:sage [2007/12/13(木) 17:24:09 ]
int**はダメだた・・・

585 名前:デフォルトの名無しさん [2007/12/13(木) 17:32:46 ]
>>572
俺にはC++のメモリ管理がだるいと感じるお前が理解できない

new したらdeleteすればいいだけじゃん

なにがだるいんだか・・・



586 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:36:05 ]
それがだるい。

587 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 18:31:19 ]
>>585
C++のメモリ管理ってスマポンタだろ

588 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 18:33:31 ]
>>580
配列名だけで先頭要素のアドレスになる。
ただし、それは変数じゃないので&を付けても無駄。

int array[10];

printf("%p¥n", array);
printf("%p¥n", &array);

で試してごらん。




589 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 18:34:41 ]
>>586
よきにはからえ、じゃないと駄目だよね。
ゆとりプログラミングの時代さ。

590 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:24:19 ]
>>588
arrayは配列の先頭要素へのポインタ
&arrayは配列へのポインタ
だから値は同じだけど意味が違うんじゃないですか?

591 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:51:16 ]
>>589
コンパイラ使うのも似たような言葉で馬鹿にされたものだけどね。

592 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:53:28 ]
>>588
違う。
arrayはポインタでは「ない」。
ポインタは変数。配列名は定数。

593 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:57:39 ]
単にarrayと書いたときに「どう解釈されるか?」の話じゃないの?

594 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:11:13 ]
アレーイ?

595 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:43:50 ]
アルェーイ?

596 名前:デフォルトの名無しさん [2007/12/14(金) 10:44:32 ]
配列とポインタは違うのに同じだ、
と言うニュアンスでK&Rで解説されたために、
その後のC言語の入門書で、
よく分ってないヤツがゴチャゴチャにして説明するようになって、
今に至る

597 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 11:49:52 ]
基本的に違うけど引数としてはどっちでもとれるって状況
だと思うが引数として使うってのが
けっこうメジャーな使いかたなためごっちゃになってるって
状況だとおれは認識してる。

598 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 11:55:35 ]
>>597
>基本的に違うけど引数としてはどっちでもとれるって状況
間違い。
引き数としては、常にポインタ。
# 但し、Cの場合。



599 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 12:36:31 ]
学校で課題で「配列とポインタの違いを説明せよ」みたいなのあったなぁ・・・

600 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 16:41:13 ]
>>585
自分がnewしてdeleteするなら別に面倒では無いだろうけど
リスト構造でなおかつ、その構造が要素追加にnew、削除にdeleteを使うようなプログラムはが何万行と続くとデバック作業がかなり面倒だろ?まあ、それはそれで利点もあるがな

それを面倒臭くないというお前はすごいな、それとも極小規模なプログラムしか組んだことないのかな?

601 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:58:01 ]
>>599
配列は箱を列に並べたもの
ポインタは矢印
でいいかな?

602 名前:デフォルトの名無しさん [2007/12/14(金) 18:43:34 ]
>>601
大学のレポートって、お絵かきでOKなの?

603 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:59:17 ]
>>598
そういうことじゃなくてポインタ変数でも配列変数でも
代入できるだろうって意味。

604 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:25:33 ]
住所そのものと住所を書いた紙が別なのは当たり前だろが
住所そのものを変えるには市町村合併でもするほかないが紙に書かれた住所を書き換えるだけなら簡単

605 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:31:58 ]
>>604
なんかオブジェクト指向の例え話なみに微妙な話だな

606 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:50:48 ]
たとえ話に住所って言葉を使うのが間違ってそう

607 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:54:39 ]
ポインタなんて
[C言語 ポインタ完全制覇]
読んで理解したなら
後は、実践を繰り返すだけだろーよ

608 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:56:31 ]
どんなに微妙でも人間の脳構造はアナロジーの利くものの方が
覚えやすくできてんだからそれでいいじゃんよ。



609 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 20:05:30 ]
C FAQの6.13
www.kouno.jp/home/c_faq/c6.html#13
c-faq.com/aryptr/ptrtoarray.html

・・・本当に配列そのものへのポインターが必要な場合は「int (*ap)[N];」 のような表現を使う。
 ここでNは配列のサイズを表す(質問1.21も参照)。
 配列の大きさがわからない場合、Nを省略することができる。
 しかし 結果として得られる「大きさが未知の配列へのポインター」は役に立たない。

ってあるんですが、
int array[10];
int (*ap)[];
ap = &arrrayってエラーにならないんですか?

610 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 20:17:14 ]
>>609
配列の不完全型ってヤツか?
良く分からんが、違う構造体同士で相互参照する時なんかに使う
構造体の不完全型の親戚みたいなもんかな

611 名前:デフォルトの名無しさん [2007/12/15(土) 02:27:42 ]
>>609
試せば良いじゃんよ

612 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 02:32:55 ]
VC++ExpressEdition

d:\work\vc\array\arrayptr.cpp(9) : error C2440: '=' : 'int (*__w64 )[10]' から 'int (*)[]' に変換できません。
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。



613 名前:デフォルトの名無しさん [2007/12/15(土) 04:19:56 ]
Cより先にアセンブラやれ!!
アドレスの概念を理解しないでいきなりやるから
難しくなるんだよ!!


614 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 05:35:26 ]
それも極端な話だなあ、と思う反面確かにそれが近道だよなあと思っているおれがいる

615 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 08:55:36 ]
ちょっと疑問なんだが、配列自体が先頭のアドレスを示しているのに、
さらにそれのアドレスが欲しい場合ってどういうケース?想像つかないんだけど。

616 名前:デフォルトの名無しさん [2007/12/15(土) 10:40:49 ]
こんな感じなら理解できるか?
#include <stdio.h>
#define N 5

void aryfunc(int ary[N][N])
{
int *temp;
for(temp = &ary[0][0]; temp != &ary[N-1][N]; temp++){
(*temp)++;
}
}
int main()
{
int ary[N][N] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},
{16,17,18,19,20},{21,22,23,24,25}};
int *temp,i;
for(temp = &ary[0][0],i = 1; temp != &ary[N-1][N]; temp++,i++){
printf("%d ",*temp);
if(!(i%5))
putchar('\n');
}
aryfunc(ary);
for(temp = &ary[0][0],i = 1; temp != &ary[N-1][N]; temp++,i++){
printf("%d ",*temp);
if(!(i%5))
putchar('\n');
}

return 0;
}

617 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:08:10 ]
>>616
添字でアクセスできるのに、わざわざポインタつかってわかりにくくしてる気がするんだが。
↓と同じことでしょ?

void aryfunc(int ary[N][N])
{
int i, j;
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
ary[i][j]++;
}
}
}


618 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:11:15 ]
>>615
配列の配列とか、配列の配列の配列とか、つまり多次元配列を
関数の引数として渡すときに必要だな



619 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:15:46 ]
>>615
配列名は、配列の「先頭の要素」のアドレス。
配列名に&をつけた場合は配列「そのものの」のアドレス。

ポインタの値としては同じ値だが、意味が違う。

なんか思い違いをしてる気がするぜよ

620 名前:615 mailto:sage [2007/12/15(土) 12:48:40 ]
>>618
多次元配列も、型と先頭アドレスと要素数を何らかの形で渡せばいいわけだから、
アドレスに関しては配列名のみを渡せばいいんじゃないの?

>>619
意味の違いは理解してるつもりだが、これじゃなきゃできない、というケースが思いつかなくてさ。
先頭の要素のアドレスと、配列そのもののアドレスが違うことがあれば理解もできるってもんだが…






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<171KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef