第9講 ポインタの学習
第2話 各変数型のバイト数
ところで、コード次のように変更してみましょう。
#include<stdio.h>
void f();
int main(){
f();
}
void f(){
int *i;
int a;
i=&a;
printf("%d\n",i);
i++;
printf("%d\n",i);
}
実行結果
皆さん不思議だと思いませんか。
i++;はi=i+1;でした。
なのになぜ4飛びになっているのでしょうか。
実は、ポインタの場合変数型によって、
i++;でも結果が違います。
試しに、次のように変更してみてください。
#include<stdio.h>
void f();
int main(){
f();
}
void f(){
char *i;
char a;
i=&a;
printf("%d\n",i);
i++;
printf("%d\n",i);
}
実行結果
と違いますね。
変数は、メモリー領域が割り当てられるわけですが、
変数型によって大きさが違います。
int型の場合4バイトなので、4飛びになるのです。
char型の場合は、1バイトなので1飛びなのです。
すると、
void f(){
int *i;
int a;
i=&a;
printf("%d\n",i);
i++;
printf("%d\n",i);
}
のピンクの部分をいじるだけで各型のバイト数がわかります。
変数には
int型とchar型以外には、
文字型に
unsigned char
整数型に
short int
unsigned short int
unsigned int
long int
浮動小数点型に
float
倍精度浮動小数点型に
double
long double
C++の文字型として
string型
(ただし、
#include<string>
using namespace std;
の2行の追加が必要)
などがありますので、それぞれバイト数を確認してみましょう。
ここでは一例としてstring型を見てみます。
#include<stdio.h>
#include<string>
using namespace std; //string型を使うときはこの2行が必要
void f();
int main(){
f();
}
void f(){
string *i;
string a;
i=&a;
printf("%d\n",i);
i++;
printf("%d\n",i);
}
実行結果
なんと32バイトです。大きいですね。
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)