第8講 ポインタと配列の学習
第1話 ポインタとは?
変数iとは何でしょうか。
今まで箱のイメージで説明してきましたが、
正確に言うと、メモリの番地が割り当てられている、のです。
int i;と宣言し場合、
例えば、メモリーの番地の1000から1004をiのメモリー領域にあてるのです。
int型は、4バイトなので4飛びになっています。
char i;と宣言した場合は、char型は1バイトなので
となります。
double i;なら8バイトで
となります。
今まで、Windows上でVisual C++を展開してきましたが、
C++はDOSプロンプト上でも使うことができます。
今回は、C++をDOSプロンプト上でC++を使用して、各変数のバイト数を確認してみましょう。
ソースの説明は、第2話で行いますので、とりあえず説明の通りにファイルを作ってください。
メモ帳などのワープロソフトを起動して、
#include<stdio.h>
int main()
{
char *i;
i=00000000;
printf("%p\n",i);
i++;
printf("%p\n",i);
}
と打ち、作業しているフォルダにchar.cppと名前をつけて保存しましょう。
ワードなどを使う場合、全角スペースは使わないでください。
全角スペースを入れるとエラーします。
スペースを使う場合は必ず半角スペースでお願いします。
作業しているフォルダとは、新規でソリューションを作るときに出てくる
の「場所のことですが、別にここでなくても自分で記憶していればどこのフォルダでも結構です。
例えば、ルートであるd:\などに保存されても結構です。
*iのiがこれから説明していくポインタ変数です。
char *i;と宣言した場合、普通の変数に相当する*iとポインタ変数iの両方が使えるようになります。
iはメモリの番地を入れる箱であり、、*iは変数の値を入れる箱の名前であると理解してください。
つまり、iにはメモリが入り、*iには値が入ります。上のプログラムでは、まだ*iには値を入れていません。
#include<stdio.h>
int main()
{
char *i;
i=00000000;
printf("%p\n",i);
*i=15;
i++;
printf("%p\n",i);
}
と*i=15;を入れると*iに値が入り、
となります。
*iは今まで学んできた普通の変数と同じであり、iはその変数のアドレスを入れる変数というわけです。
ポインタ変数は、メモリの番地=アドレスを直接扱うことができるのです。
次に、
#include<stdio.h>
int main()
{
int *i;
i=00000000;
printf("%p\n",i);
i++;
printf("%p\n",i);
}
と打ち、作業しているフォルダにint.cppと保存しましょう。
この講義で何度も言ってきましたように、
ファイル名は名前であり、それ自体には意味がありません。
唯一の意味は、他と区別するだけです。
だから、char.cppやint.cppは1.cppや2.cppでも構いません。
ですが、.cppの部分は変えてはいけません。
cppの部分は拡張子と言われるもので、ファイルの種類を示します。
cppの場合は、C++のファイルであることを示しています。
さらに、
#include<stdio.h>
int main()
{
double *i;
i=00000000;
printf("%p\n",i);
i++;
printf("%p\n",i);
}
と打ち、ファイル名をdouble.cpp
などとしましょう。
3つのファイルを保存できたら、スタート→すべてのプログラム→Micosoft Visual Studio 2010 Express→Visual Studio コマンドプロンプト
の順にクリックしましょう。すると、コマンドプロンプトの画面になります。
作業しているフォルダに変更するため
などと打ちエンターしてください。
すると、フォルダが先ほどC++のファイルを保存したフォルダになります。
そして、と入力してからエンターをして下さい。
となればエクゼファイル(実行ファイル)の作成に成功したことになります。
もしエラーが出た場合、メモ帳に戻り間違いを訂正して成功するまで同じ事を繰り返してください。
以下同様にして
実行ファイルint.exeとdouble.exeを作成してみましょう。
作成に成功したら、charエンター、intエンター、doubleエンターを繰り返して、
としてください。
char.exeを実行させるには、コマンドラインからcharと打ちエンターを押せばよいのです。
変数型によって、同じi++でも、割り当てられるバイト数が違うことを理解して下さい。
つまり、char型は1バイト、int型は4バイト、double型は8バイトです。
尚、i=00000000;で強制的に*iの番地を00000000としましたが、
これがない場合はコンピュータが自動的に番地(メモリアドレス)を割り振ることになります。
初心者のためのjava 入門 基礎から応用まで
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすい vb 入門 vba 入門 基礎から応用まで 第1部
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ