第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);
}
実行結果
C言語

初歩と違いますね。
変数は、メモリー領域が割り当てられるわけですが、
変数型によって大きさが違います。
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バイトです。大きいですね。



第1話へ 第3話へ


戻る


VB講義へ
VB講義基礎へ

vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)