第11講 シューティングゲーム開発(銃社員の自作まで)
第10話 引数の名前について

jyu.cppのコード
#include"main.h"
//jyu(じゅう) taisyoutonarukey(たいしょうとなるきー)
//対象となるキーが直前に押されておらず、今押されている場合にそのキーを押したと判定する関数
//キーが押されたと判定:1 キーが押されていないと判定:0
char jyu(int k) { //kは、今対象としているキーの出席番号
saisyonogamen.cppのコード
#include"main.h"
void saisyonogamen() {
  DrawBox(0, 0, 800, 1000, siro, true);
  int gazou;
  gazou = LoadGraph("画像/02.png");
  DrawGraph(0, 0, gazou, false);
  int a=KEY_INPUT_A;
  if (jyu(a) == 1) {
と変更するとエラーする?

答えはエラーしないです。
どうしてでしょうか。
第3講第9話で、
−−−以下は基礎事項(基礎がわかっている方は飛ばしてください)−−−
変数とはものを入れる箱です。
ただし、C言語が用意する箱(変数)は用途が決まっていて、
整数入れる箱に文字は入れられません。
文字を入れる箱にも整数は入れられません。

画像などのハンドル(出席番号)は整数ですから、
整数を入れる箱を用意したのです。
  int a;
は整数型の箱を用意してその箱の名前をaとするという意味です。
これを整数型変数の宣言といいます。
整数型の箱を用意してその箱の名前をaと宣言するということです。
  int a;
  a = LoadGraph("画像/00.png");
  DrawGraph(200, 50,
a, true);
とするときに、aは皆さん同じ箱であると思うかもしれませんが、
実は色のついているaだけ違います。
例えば、"画像/00.png"の出席番号(ハンドル)が
56(本当はこんなに簡単な番号ではありません)だとすると、
  DrawGraph(200, 50, a, true);

  DrawGraph(200, 50, 56, true);
です。
  int a;
  a = LoadGraph("画像/00.png");
の2行目のaは箱そのもの
09
であったのに対して、
  DrawGraph(200, 50, a, true);
aはaの中身56です。
=は実は数学や算数の=ではありません。
むしろ←であると思った方がよいのです。
  a=56;
は 
  a←56
で箱に56を入れる操作です。
これを代入といいます。
基本的に=の左側にあるときは、箱そのものであり、
=に右側にあるときは箱に入っているものということになります。
  DrawGraph(200, 50, a, true);
にように中身を取り出すことを参照といいます。
箱(変数)はいろいろな場所で使いますが、
基本的には中身をコピーして使います。
中身をコピーして使うことを参照というのです。
−−−以上基礎事項−−−

と書いたことがヒントです。
jyu(
a)によって、渡しているものは決してaという箱そのものではありません。
あくまで箱に入っている30という値です。
呼び出される側 char jyu(int
k) は、
あくまで30という値の受け箱として、
kという名前の箱を用意したにすぎません。
私が繰り返し、名前には意味がないと言ってきたことの意味がおわかりになるのではないでしょうか。
(ですから、私は変数名を英単語で書くことには反対です。
初心者は、名前自体に意味があると受け取ってしまうからです。)
箱の名前をなんと呼ぼうが自由なのです。

関数の独立性や変数の有効範囲(スコープ)ということを前に話題したこと覚えていますか。
int main(){
  int a;
  ・・

void f(){
  int a;
  ・・

箱の名前は同一ですが、2つは別の箱です。
1つ目の箱aは社長main()の専用の箱です。
2つ目の箱aは社員f()の専用の箱です。
変数の通用する範囲は、関数内のみでした。
なぜ、「私が独立部品を組み立てる」とわざわざ独立を入れるか申しますと、
箱aの中身は、他の関数によって書き換えられることはないからです。
変数のスコープが関数内に限定されているために、
他の関数の内容がどうなっているかを知らなくても、
1つの部品(関数)の開発に専念できるのです。

ということは、箱はその社員専用のものであって、
社長であるmain()でも使えないのです。

ですが、箱の中身を渡すのではなく、
箱そのものを渡したい場合もあります。
それは、箱の中身の変更を他の社員に依頼する場合です。
実は、C言語には箱そのものを渡す方法も用意されています。
それは、ポインタです。
ポインタとは箱のアドレス=住所(隠し場所)を収納する変数です。
ポインタも箱の1つですから、箱そのものを渡すことはできないのですが、
参照渡し=箱の内容=箱の住所を渡すことができます。
つまり、社員f()専用の箱がどこにあるのかを住所を教えることによって、
他の社員g()は、社員f()専用の箱の隠し場所を知ることができ、
その箱を使えるようになるのです。
隠し場所を教えるということは、
そこにある箱を使用することを認めたということです。
ポインタの存在が、C言語の大きな魅力の1つです。
ポインタについては後で学習します。




第9話へ   第12講第1話へ

第2部トップへ  第1部トップへ


初心者のための excel 2016 マクロ VBA 入門講義 基
礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための]世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップ