アカウント名:
パスワード:
自分も機械語から始めたんで、壁と言われてるCのポインタもアッサリ通過だったから、後を考えるとコレが良さそう。
> 壁と言われてるCのポインタもアッサリ通過
私も今振り返ると、あっさり通過してしまったのですが、当時は概念的にあっさり理解をしてしまっていたので、なぜポインタが壁なのかが理解できなく、もしかしたら、他に自分では気づいていない壁があるのではないかと、存在しない壁を探し回って逆に苦労しましたよ。。。
私も機械語から入ったので、ポインタの何処が難しいのかまるで分からなかったですよ^^
Cで難しいのは、ポインタの概念というより表記法でしょう。pが指す先を*pで表記するのはわかる。でもポインタを宣言する時はchar *pとするわけで、「これはpが指す先を宣言するわけだから…」と考えてわけがわからなくなった記憶があります。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり
基本から教えるべきでしょう (スコア:3, すばらしい洞察)
何事も基礎が大事です。
最初は、こんなの [otonanokagaku.net]を与え、概念を「体験」させます。
つぎに、本番 [otonanokagaku.net]と田宮のリモコンロボット製作セットを渡します。
(インタフェース部分は大人が作ってあげないと無理なので、そこは各自で工夫を)
目の前で「プログラムの通りに実物が動く」ので興味が長続きすると思うのです。
notice : I ignore an anonymous contribution.
Re: (スコア:1)
自分も機械語から始めたんで、壁と言われてるCのポインタもアッサリ通過だったから、後を考えるとコレが良さそう。
the.ACount
Re: (スコア:2)
> 壁と言われてるCのポインタもアッサリ通過
私も今振り返ると、あっさり通過してしまったのですが、
当時は概念的にあっさり理解をしてしまっていたので、
なぜポインタが壁なのかが理解できなく、
もしかしたら、他に自分では気づいていない壁があるのではないかと、
存在しない壁を探し回って逆に苦労しましたよ。。。
Re: (スコア:2)
私も機械語から入ったので、ポインタの何処が難しいのかまるで分からなかったですよ^^
Re:基本から教えるべきでしょう (スコア:0)
Cで難しいのは、ポインタの概念というより表記法でしょう。
pが指す先を*pで表記するのはわかる。でもポインタを宣言する時は
char *p
とするわけで、「これはpが指す先を宣言するわけだから…」と考えて
わけがわからなくなった記憶があります。
Re: (スコア:0)
>とするわけで、「これはpが指す先を宣言するわけだから…」
「pが指す先」なんて、どこにも宣言していません。まずはそこからか!
a*bと*pの*が同じじゃないことを理解できる?、
じゃあ、char*pと*pと(char*)pの*は区別できる?
区別できれば、意味が違うことも理解できるでしょ?
もしかして、/*p*/の*も区別できないのか :-p
Re: (スコア:0)
Re: (スコア:0)
char *p;
でポインタが指す先の領域も確保されると思っている人が多いのですが、
(驚くべきことに、90年代にはそう断言している本すらありました)
その半数ぐらいがこの文法の勘違いに起因しています。良く考えると
なぜこういう体系になっているのか分かるのですがね。
>a*bと*pの*が同じじゃないことを理解できる?
私はこれが理解できませんでしたね。いや、理解はしていましたが
「人間がそう区別してコードを書いても、機械がどうやってそれを判別するんだ?」
という感じで。その後、レキシカルアナライザーやらの存在を習って、ああ
そういうことなのかと感心しました。
char *p;の勘違いをしている人の一部は、やはりそういう疑問を持っていましたね。