> ポインタは配列より少し便利なだけで出来ることは同じだと本に...
そうそう、少しだけ違うんです。もしかしたらポインタなんか使わなくても配列だけで
やっていけるようなプログラムしか書かないかも知れません。で、「少ししか違わないん
ならその違いも知ってみようじゃないか」と思えるかどうかでその後は大きな差になって
くるでしょうね。
↑の言葉は、「かけ算は足し算より少し便利なだけでできる事は同じだと本に...」と言っ
てるのと変わらないように思えます。九九を覚えるのに苦労してでもかけ算を使えるよう
になった方が便利ですし、小数のかけ算みたいに足し算の知識だけでは難しい事もできる
ようになっちゃう。配列とポインタは確かに似ているものですが、配列もポインタも使え
るようになったら、と~っても便利ですよ。
> 関数は高校で習って理解できるようであれば使います。
> 今はサインもコサインも知りません。
これは「誤訳」だと思ってください。
数学でもC言語でも、関数の事は英語で「function」と言います。でもC言語の場合、
「function」はどちらかというと「機能」と訳した方がピッタリくると思うのです。例え
ばシューティングゲームのプログラムを作るとして、「どれかのキーを押したら1発撃
つ」というのは、プログラムの機能であって、数学でいう関数とは違いますよね。
C言語でプログラムを作るということは、そういう機能をたくさん作って、うまいことつ
なげていくということなんです。C言語でもともと用意されているfunctionだけでもプロ
グラムは作れますが、それらをうまい事組み合わせたりして自作の「機能」を増やしてい
くとプログラムを作るのがどんどんラクになっていくでしょう。ラクになった分、もっと
いろんな事ができるプログラムを作れるようになるでしょう。みんなそれを繰り返してす
ごいプログラムを作っているんです。
まだ中一だというのに「高校で習って理解できるようであれば」なんて遠い先の事を言わ
ないで、とにかくチャレンジしてみたらいいんじゃないかな。きっと「あ、なんだ。こう
いう事なの?」って感じると思いますよ。
C言語では関数と言ってますが、むしろサブルーチン的なものですね。
要は、同様の処理をあっちこっちに書くよりも関数として書いておいて
必要なところではそれを呼び出して機能を利用する事が目的です。
これによってソースが一箇所だけになるので後で手直しするのが非常に楽になります。
で、この関数を使う時に上の方の受け渡しを行うのですが、
この受け渡しでポインタは必須になります。
まあ、変数を全部グローバルに出してBASICみたいなことをすれば、
引数はいりませんけれど、これではC言語でおいしいところがまったく生かされませんし。
単にmain関数の中に全てのコードを叩き込むようなプログラムも最初の練習では良いですが、
実際にある程度の機能を持ったプログラムを作るのであれば、あまり好ましくないでしょう。
C言語はうまく機能を分割して関数として作成し、これを組み合わせて全体の機能を実現
する事が出来る言語です。
今後、C言語を使ってアプリケーションの作成までやってみようと思うのであれば、
ぜひとも、関数とポインタについてきちんと理解してください。
誤字です。
誤)
この関数を使う時に上の方の受け渡しを行うのですが、
正)
この関数を使う時に情報の受け渡しを行うのですが、
補足。
>この受け渡しでポインタは必須になります。
>まあ、変数を全部グローバルに出してBASICみたいなことをすれば、
>引数はいりませんけれど、これではC言語でおいしいところがまったく生かされませんし。
必須と言うのは言い過ぎかも。
但し、ポインタを使わないと山ほど引数を渡したりしないといけなくなったり、
関数から大量の情報を返したい時はポインタを使わないと無理です。
上でも書いているようにグローバル変数を使えば出来なくはないですが、
あまりスマートな実装とはいえないと思いますしね。
分かりました。ポインタと関数についても学んでおきます。