アカウント名:
パスワード:
プログラミング言語Cといえば、ポインタの章が理解できずに何度も読みすぎてそのページだけ黒くなっていました。ご逝去の報に接し、謹んで哀悼の意を表します。
Cの前にマシン語をやっていたので、ポインタは理解できた(というか、ポインタが理解できない人のことが理解できない)のですが、関数へのポインタの配列を返す関数にtypedefして~とか言うと、ついていけなくなります。
それから、
int *i;
は理解できますが、
int* i;
と書く発想が理解できません。「int*」って何だよ?って。
今は後者が主流な気がする本の影響もあってC++使いは特に
私の場合、Z80世代からパソコンをはじめて、今の本職はC++ですが、
int *p;
の書き方じゃないと落ち着きません。その変数がポインタであることが見た瞬間に理解できるような書き方をしたいので、*と変数名はつなげて書きたいです。
初期のCを飛ばして、C++やJavaから入った人だと、
int* p;
と書くようです。
そういう人は、 unsigned char* p; とか書くんでしょうか?unsignedとcharの間にスペースが入っているのに、charと*の間が詰まってるのって、気持ち悪くないですかね?
こういうのを見る度に、こっそり書き直したくてそわそわします。しかし、バージョン管理システムに履歴が残ってしまうので、迂闊に書き直すわけにもいきません。まったく困ったものです。
いっそのこと、複数の変数をまとめて宣言できるってのを廃止するってのは?int a;char b;int* c;char* d;としか書けなくすれば万事解決です。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
プログラミング言語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 (スコア:0)
問題は、int* i, j; と書けてしまう事だ。で、文法的には間違いも無く、動作もする、しかし、予想外の。
この問題を解決するには、int * i, j; の文法的意味をきちんと把握する以外には無い。
よって、「intのpointer型」ではなく、「int型へのpointer」と理解する(させる)のがいいのではないかと思う。
Re:プログラミング言語C (スコア:2)
いっそのこと、複数の変数をまとめて宣言できるってのを廃止するってのは?
int a;
char b;
int* c;
char* d;
としか書けなくすれば万事解決です。
Re: (スコア:0)