配列と文字列長sizeof()、strlen()、string length()、size()

3708 ワード

目次
一、配列または文字列の長さ
1、sizeof()---占めるバイト数を求める
(1)、整数文字型配列について
(2)、整数または文字ポインタ
2、strlen()---文字配列または文字列が占めるバイト数
(1)、文字配列
(2)、文字ポインタ
3、sizeof()とstrlen()の違い
4、c++の文字列stringの長さ
 
 
一、配列または文字列の長さ
1、sizeof()---占めるバイト数を求める
(1)、整数文字型配列について
int A[]={1,4,5,2,8,6,0};
//整数配列Aのバイト数を求める
int i=sizeof(A);//i整数配列Aが占める総空間のバイト数を表す
cout<
i=sizeof(A)/sizeof(int);//このときiは数字配列の要素個数を表します
 
 
char B[]={‘a’,’e’,’s’,’r’,’q’};
//文字配列のバイト数を求める
i=sizeof(B);          
cout<
//文字配列の要素数を求める
i=szieof(B)/sizeof(char);//結果は5
 
char C[]=”abcde”;
i=sizeof(C);//iは文字配列Cが占めるバイト空間であり、6であり、最後は'0'である
cout<
 
(2)、整数または文字ポインタ
         int*p;
         int A[]={1,2,3,4,5,6,7,8};
         p=A;
         inti=sizeof(*p);//このときiはpが指す整数配列Aの最初の要素A[0]のバイト数
         cout<
               i=sizeof(P);//pは整形ポインタ、大きさは定値4 couti=sizeof(p);//pは文字ポインタ、ポインタの大きさは定値、4 cout2、strlen()---文字配列または文字列が占めるバイト数
strlenは、メモリのある位置(文字列の先頭、中間の位置、さらには不確定なメモリ領域)からスキャンを開始し、最初の文字列の終端記号'0'にぶつかるまでカウント値を返します.--実際の文字列または文字配列の実際の長さを指します(スペースのバイト数ではありません).
(1)、文字配列
         charA[6]={'a','b','\0','d','e','r'};  int i=strlen(A);//iは2で、'0'まで終わるので、実際のA[]は2つの要素cout(2)、文字ポインタ
char C[]={"abcdef"};  char *p1=C;   i=strlen(p1);//結果は6 cout(4)、空のクラスについて
空のクラスはどのくらいのスペースを占めていますか?多重継承は?
自分でプログラムを作成して簡単に測定することができます.
#include
usingnamespace std;
classA
{
};
classA2
{
};
classB:public A
{
};
classC:public virture B
{
};
classD:public A,public A2
{
};
intmain()
{
cout<
cout<
cout<
cout<
return0;
}
 
結果:1 1 4 1
空クラスが占める空間が1バイトであることを示し,単一継承の空クラス空間も1であり,多重継承の空クラス空間は1であるが,虚継承は虚表(虚ポインタ)にかかわるためsizeof(C)は4である.
 
3、sizeof()とstrlen()の違い
sizeof()は、変数宣言後に占めるメモリ数であり、実際の長さではありません.また、sizeofは関数ではなく、オペレータであり、strlenは関数です.   
4、c++の文字列stringの長さ
string str1=”xxxxx”;  int i=str1.length();  cout< i=tr1.size();cout