ポインタ死ね。

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2006/09/02(土) 01:28:42
規格票で解説してあるといいね。どこを見ればいいのかな?
953デフォルトの名無しさん:2006/09/02(土) 01:49:26
>>950
typeidにT&型のオブジェクトを使用しても、参照だからTを見に行ってしまう。
だからtypeidで確認するのは無意味。
954デフォルトの名無しさん:2006/09/02(土) 01:50:36
typeid()で同じと判断されたら、同じだと思っていいんじゃね?
955デフォルトの名無しさん:2006/09/02(土) 01:55:02
>>948

#include<iostream>
template <int N> 
void func(int (&a)[N]){std::cout << typeid(&a).name();}
int main(){int a[10];func(a);}

dmc,g++,clで試してみたけど全部int[10]と認識されていたけど、
どこのコンパイラの話?
956デフォルトの名無しさん:2006/09/02(土) 02:10:39
BCCはint*になる。
957デフォルトの名無しさん:2006/09/02(土) 08:33:26
古いgccもHPのccもVC6も確かダメだな。
>template<typename T, std::size_t N> inline std::size_t numberof(T (&)[N]) {return N;}

これが通らない。
958デフォルトの名無しさん:2006/09/03(日) 01:40:55
VC6のテンプレート回りはへっぽこさんだから…

テンプレートスレになっとるがな。
959デフォルトの名無しさん:2006/09/03(日) 13:36:47
ttp://homepage3.nifty.com/mogami/diary/d0607.html#21t1
>cipherの設計の目標の一つはポインタ的な物の排除
960デフォルトの名無しさん:2006/09/03(日) 14:28:48
>排除であるが、 Ocamlもやはりポインタ的な物を含んでいる。
961デフォルトの名無しさん:2006/09/03(日) 22:44:50
Ocamlのポインタ的なものって、参照とかmutableフィールドか?
そうすると、この人の目指すところはHaskellあたりにしかないのだが。
962デフォルトの名無しさん:2006/09/04(月) 01:42:49
配列とポインタって、概念が違うだけで、実際には同じじゃね?
つうか、配列使うな。 ポインタも使うな。
使っていいのは、リスト構造。
963デフォルトの名無しさん:2006/09/04(月) 01:49:04
>>962
Cのポインタは事実上配列にアクセスすするための一手段と化している。
964デフォルトの名無しさん:2006/09/04(月) 01:53:08
確か標準関数で文字列周りはポインタで渡してたな
965デフォルトの名無しさん:2006/09/04(月) 01:58:50
いいか、ポインタの代わりに、メッセージIDを使うんだ。
欲しいオブジェクトのデータを貰うためには、そのIDとオペレーションを書いてメッセージボトルに入れて、海に流すのさ。
そうすると、メッセージボトルを受け取った相手が、それが自分宛でなければまた海に流す。
繰り返すうちにいずれは宛先の相手に届くからな。
目的の相手に届いたら、メッセージに書かれてるオペレーションを元に結果をまたボトルに入れて海に流してくれるんだ。

さあ、こうやって直接メモリーの番地を指定しなくとも、あいてに伝わる方法はあるのさ。
相手が受け取るまで手渡しリレーでもいいから、ポインタなんて使わなくていいのさ。
966デフォルトの名無しさん:2006/09/04(月) 02:09:14
>>965
そのメッセージIDをポインタと呼称しても、違和感無く他人に通じると思うよ。
967デフォルトの名無しさん:2006/09/04(月) 02:13:37
>>966
ポインタでは漂流しない
968デフォルトの名無しさん:2006/09/04(月) 02:16:35
「ここの作業よろしくね」
っといってその場所を書いた紙を作業者に渡す

場所を書いた紙 = ポインタ
969デフォルトの名無しさん:2006/09/04(月) 02:26:27
結局、ポインタと配列って、見方を変えただけの物だと思うよ。
家と言う入れ物に住所が書いてあるのは、配列に番号が振ってあるのと同じ。
ある規則によって振られた識別子ね。

ポインタというのは、強いて言えば、東経135度23分xx、北緯32度26分xxといったたぐいのもの。
機械の中身の厳密なメモリーの位置ね。
970デフォルトの名無しさん:2006/09/04(月) 02:38:25
>>967
ポインタとは違うが、最近のCPUではメモリアドレスも仮想化されて、
何段かテーブル参照をしてようやく物理メモリのアドレスを得ることもある。
それがなんだか漂流とは違うけど、似たようなものを感じ取った。
971デフォルトの名無しさん:2006/09/04(月) 02:38:29
ポインタの主な使われ方の一つに連続要素の参照があるだけで
全然違うものだと思うんだが。
972デフォルトの名無しさん:2006/09/04(月) 02:41:25
配列を覚えるだけで、
ポインタを完全に使いこなせるようになるなら同じものといえる。
そうでないなら実質的に違うもの。
973デフォルトの名無しさん:2006/09/04(月) 02:44:49
Cみたいに配列とポインタに違いを見出せない人がいるほど密接な言語ばかりではないんだよ。
974デフォルトの名無しさん:2006/09/04(月) 02:48:24
>>972
それって配列は知ってるけどメモリ上にどう格納されてるのか知らないから
違うって話じゃないのか?
975デフォルトの名無しさん:2006/09/04(月) 09:36:46
>>974
いや、学習にかかるコストの話。
ポインタを使うには、ポインタ演算や間接参照、ポインタのポインタ、
ヌルポインタの対処など色々学習する必要がある。
同じと見なすには新たに覚えることが多すぎるのでは?ということ。
976デフォルトの名無しさん:2006/09/05(火) 00:32:32
>>975
まぁポインタ習得は結構時間かかったけどな
でも苦労しただけの価値はあると思うよ

ポインタ知らない頃のソース見ると多重ループの山で
ソースが画面右はみだしてたからな
977デフォルトの名無しさん:2006/09/05(火) 02:16:36
昔すぎてよく憶えてないけど、
ポインタ使うのにそんな苦労した記憶ないなあ。
僕が読んだ本ではかなり最初の方でポインタの解説してたし
ソースをガリガリ書くようになったのは一通り覚えた後だったからかな。
978デフォルトの名無しさん:2006/09/05(火) 02:49:52
覚えちまえば何のことはないし、
何で覚えるのに苦労するのかすらわからなくなるが、
初めて出くわした時には確実に蹴躓いてる、それがポインタ。

つーか実のところポインタが難しいんじゃなくって、それで実装される
リストとかのデータ構造の学習が難しいんじゃなかろうか。
979デフォルトの名無しさん:2006/09/05(火) 09:59:18
俺は機械語→アセンブリ→PL/M→C と来たから
なんでポインタが理解できないのかが理解できない。

>>978 後段落
それはない。それ以前で躓いている。
980デフォルトの名無しさん:2006/09/06(水) 01:34:21
ポインタの方が効率的で解りやすい時もあるよ。
なんでもかんでも配列でやるのは、かえって複雑になるよ。
981デフォルトの名無しさん:2006/09/06(水) 06:51:18
ポインタで躓いた記憶はあるけど、いつの間にか使えるようになってた。
「こういう時にこう使うんだ」って体験を積み重ねていけば、
その内体で覚えられるんじゃないかな。
982デフォルトの名無しさん:2006/09/06(水) 17:55:27
ついにこのスレも980超えたか
983デフォルトの名無しさん:2006/09/06(水) 18:14:57
煽り気味のスレタイのわりに面白かった。
やっぱそう思う人が多いってことなんだろうな。
984デフォルトの名無しさん:2006/09/07(木) 03:32:24
Cで最初に蹴つまずく壁だろうからなー。
読んだことは無いが、Cのポインタだけで一冊書いた本とか出てなかったっけ。
一冊分も書くことがあるのが不思議ではあるが。
985デフォルトの名無しさん:2006/09/07(木) 17:46:03
ポインタ完全制覇は結構面白かった
986デフォルトの名無しさん:2006/09/08(金) 02:20:48
>>985
何が書いてあるの?
興味ある。
987デフォルトの名無しさん:2006/09/08(金) 02:46:54
以下ポインタ完全制覇の要約で感動のフィナーレ
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
988デフォルトの名無しさん:2006/09/08(金) 03:42:46
ポインタが完全制覇できます
989デフォルトの名無しさん:2006/09/08(金) 03:43:23


  〜  完  〜

990デフォルトの名無しさん:2006/09/08(金) 03:44:14
991デフォルトの名無しさん:2006/09/08(金) 21:10:20
991
992デフォルトの名無しさん:2006/09/08(金) 21:11:11
992
993デフォルトの名無しさん:2006/09/08(金) 21:11:54
993
994デフォルトの名無しさん:2006/09/08(金) 21:12:36
994
995デフォルトの名無しさん:2006/09/08(金) 21:13:15
995
996デフォルトの名無しさん:2006/09/08(金) 21:14:17
996
997デフォルトの名無しさん:2006/09/08(金) 21:16:36
aa
998デフォルトの名無しさん:2006/09/08(金) 21:17:37
998
999デフォルトの名無しさん:2006/09/08(金) 21:18:30
999
1000デフォルトの名無しさん:2006/09/08(金) 21:19:09
>>1
死ね。氏ねじゃなくて、死ね。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。