アカウント名:
パスワード:
プログラミング言語Cといえば、ポインタの章が理解できずに何度も読みすぎてそのページだけ黒くなっていました。ご逝去の報に接し、謹んで哀悼の意を表します。
Cの前にマシン語をやっていたので、ポインタは理解できた(というか、ポインタが理解できない人のことが理解できない)のですが、関数へのポインタの配列を返す関数にtypedefして~とか言うと、ついていけなくなります。
それから、
int *i;
は理解できますが、
int* i;
と書く発想が理解できません。「int*」って何だよ?って。
今は後者が主流な気がする本の影響もあってC++使いは特に
私の場合、Z80世代からパソコンをはじめて、今の本職はC++ですが、
int *p;
の書き方じゃないと落ち着きません。その変数がポインタであることが見た瞬間に理解できるような書き方をしたいので、*と変数名はつなげて書きたいです。
初期のCを飛ばして、C++やJavaから入った人だと、
int* p;
と書くようです。
そういう人は、 unsigned char* p; とか書くんでしょうか?unsignedとcharの間にスペースが入っているのに、charと*の間が詰まってるのって、気持ち悪くないですかね?
こういうのを見る度に、こっそり書き直したくてそわそわします。しかし、バージョン管理システムに履歴が残ってしまうので、迂闊に書き直すわけにもいきません。まったく困ったものです。
「pはポインタである」が真っ先に関連づけられることから、*pと書くのが理にかなっていると思うのですが。
話はそれますが、WindowsのAPIでよく現れるような、LPDWORD p;の様な、わざとポインタを隠蔽するような書き方は、愚の骨頂だと思うです。
私はint* hogeです。int型とは別に、intポインタ型ってのがあると考えた方が合理的だと思うのです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
プログラミング言語C (スコア:0)
プログラミング言語Cといえば、ポインタの章が理解できずに何度も読みすぎてそのページだけ黒くなっていました。
ご逝去の報に接し、謹んで哀悼の意を表します。
Re: (スコア:0)
Cの前にマシン語をやっていたので、ポインタは理解できた(というか、ポインタが理解できない人のことが理解できない)
のですが、関数へのポインタの配列を返す関数にtypedefして~とか言うと、ついていけなくなります。
それから、
は理解できますが、
と書く発想が理解できません。「int*」って何だよ?って。
Re: (スコア:0)
今は後者が主流な気がする
本の影響もあってC++使いは特に
Re: (スコア:2)
私の場合、Z80世代からパソコンをはじめて、今の本職はC++ですが、
int *p;
の書き方じゃないと落ち着きません。その変数がポインタであることが見た瞬間に理解できるような書き方をしたいので、*と変数名はつなげて書きたいです。
初期のCを飛ばして、C++やJavaから入った人だと、
int* p;
と書くようです。
そういう人は、 unsigned char* p; とか書くんでしょうか?
unsignedとcharの間にスペースが入っているのに、charと*の間が詰まってるのって、気持ち悪くないですかね?
こういうのを見る度に、こっそり書き直したくてそわそわします。しかし、バージョン管理システムに履歴が残ってしまうので、迂闊に書き直すわけにもいきません。まったく困ったものです。
Re: (スコア:0)
では、
unsigned char * p;
これはどうですか。
ちなみに、
int *a,*b,*c;
のつもりで
int* a,b,c;
なんてやったら・・・ということを心配するならば、まず、
int* a;
int* b;
int* c;
と書くことから先に指摘すべきです。
Re:プログラミング言語C (スコア:1)
「pはポインタである」が真っ先に関連づけられることから、*pと書くのが理にかなっていると思うのですが。
話はそれますが、WindowsのAPIでよく現れるような、LPDWORD p;の様な、わざとポインタを隠蔽するような書き方は、愚の骨頂だと思うです。
Re:プログラミング言語C (スコア:1, 興味深い)
の人は、pはint型を指す「ポインタ」だから、という感じだと思いますが、
C++でテンプレートだとか無名引数とか使うと、pはint型を指す「ポインタ型」と、
型全体に着目する事が増えるので int* pの方が自然に感じてくるだけです。
私にとっては
typedef Class1< int *, int * > IClass1;
より
typedef Class1< int*, int* > IClass1;
の方が、テンプレート引数の型が「int型を指すポインタ型」だとわかりやすいと
感じるので、変数の宣言にも同様のルールを当てはめるわけです。
ポインタ型の無名引数の場合も同様です。
あと、const int* const p = &a;
みたいな、constオブジェクトを指すconstなポインタは、*pな場合書き辛いってのもあります。
Re: (スコア:0)
私はint* hogeです。
int型とは別に、intポインタ型ってのがあると考えた方が合理的だと思うのです。