アカウント名:
パスワード:
(統一仕様はないけど)アセンブリ言語#CAP-XとかCASLとかっていうのは統一仕様に入るのかな?
C(not C++)を躓きなく,ものにしたいと思うなら、完全でなくていいからアセンブラで書かれたのを読めるように学習してからのほうが結局早道だとおもう。
俺もZ80をやってからCをやったので、ポインタが難しいという人のことが理解できない。
私も最初はBASICだったけど、Z80,6809と続いたのでポインタのどこが難しいのかさっぱり分からなくて。6809だとインダイレクトアドレッシング(って名前だったっけ?)まんまだもん。そりゃ、今でも***pとか書かれていたら身構えるけど。
でも新人教育の講師で「ポインタが分からない」という人がいたらどう教えていいか悩むと思います。Cだとやっぱりアドレスの概念から教えるのが近道なのかなぁ。
型とそのポインタを表す表記方法がわかりにくいんですよPascalみたいな方式の方がわかりやすい
int a = 1;int *b = &a, c = 2;*b = c;
分かってしまえば大したことではないのだけど、型名の方に*をつけ、1回で1つの変数しか宣言しないようにして覚えた。慣れてしまえば、どちらでもいいけど、理屈で覚えようとするとはまる。
理屈で覚えようとするからこそ、変数名のほうに*をつけるんじゃないの?型名のほうに*をつけるのは、理屈にあわない。
> int *b;
これは、*bがint型ですよ、と言ってるんだと解釈してる。*bがint型なら、bはint型へのポインタですよね。
アセンブラみたいに、ポインタ(アドレス)を「型」として扱わず、レジスタに格納されている値を数値とみなそうがアドレスとみなそうが自由、みたいなほうが、かえってわかりやすいかもね。間違いは増えるかも知れないが。
int a;int* b, c;
c = &a;???
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
そのほかのプログラミング言語って (スコア:3)
Re: (スコア:0)
(統一仕様はないけど)アセンブリ言語
#CAP-XとかCASLとかっていうのは統一仕様に入るのかな?
C(not C++)を躓きなく,ものにしたいと思うなら、完全でなくていいからアセンブラで書かれたのを読めるように学習してからのほうが結局早道だとおもう。
Re: (スコア:1)
Re: (スコア:1)
俺もZ80をやってからCをやったので、ポインタが難しいという人のことが理解できない。
Re: (スコア:1)
私も最初はBASICだったけど、Z80,6809と続いたのでポインタのどこが難しいのかさっぱり分からなくて。6809だとインダイレクトアドレッシング(って名前だったっけ?)まんまだもん。そりゃ、今でも***pとか書かれていたら身構えるけど。
でも新人教育の講師で「ポインタが分からない」という人がいたらどう教えていいか悩むと思います。Cだとやっぱりアドレスの概念から教えるのが近道なのかなぁ。
vyama 「バグ取れワンワン」
Cの表記法が教えにくい (スコア:0)
型とそのポインタを表す表記方法がわかりにくいんですよ
Pascalみたいな方式の方がわかりやすい
Re: (スコア:0)
分かってしまえば大したことではないのだけど、型名の方に*をつけ、1回で1つの変数しか宣言しないようにして覚えた。慣れてしまえば、どちらでもいいけど、理屈で覚えようとするとはまる。
Re: (スコア:0)
理屈で覚えようとするからこそ、変数名のほうに*をつけるんじゃないの?
型名のほうに*をつけるのは、理屈にあわない。
> int *b;
これは、*bがint型ですよ、と言ってるんだと解釈してる。
*bがint型なら、bはint型へのポインタですよね。
アセンブラみたいに、ポインタ(アドレス)を「型」として扱わず、
レジスタに格納されている値を数値とみなそうがアドレスとみなそうが自由、
みたいなほうが、かえってわかりやすいかもね。間違いは増えるかも知れないが。
Re: (スコア:0)
特に、C++の場合は参照があって、int &bと書いても&bがint型になるわけではない。int*でint型のポインタ、int&でint型の参照としてしまうとすっきりする。
C++が腐っていると言えばそれまでだが、結局のところ、宣言の際に、変数名の前に*があれば、その変数はポインタとなり、=があっても、代入じゃなくて、初期値の指定と理解しておけば、代入の場合とは区別して考えることができ、矛盾はない。だから、Cにおいては宣言時に変数名に*をつけるのが妥当なんだと思う。
けど、初心者には初期値の指定って、代入にしか見えないんだよな。
Re: (スコア:0)
int a;
int* b, c;
c = &a;
???
Re:Cの表記法が教えにくい (スコア:0)