C++基礎知識(一)基礎知識
4611 ワード
基本データ型
C++基本タイプ最小記憶空間boolタイプchar文字型8ビットwchar_t幅文字型16ビットshort短整型16ビットint整形16ビットlong長整形32ビットfloat単精度浮動小数点型6ビット有効デジタルdouble二精度浮動小数点型10ビット有効デジタルlong double拡張精度浮動小数点型10ビット有効デジタル符号なし型を得るにはunsignedタイプを指定する必要があります.例えばunsigned long
比較java
JAvaのデータの範囲はjavaを実行する機械とは関係ありませんが、C++では、プログラムはシステム、プロセッサ、コンパイラを使わないことによってサイズを選択し、効率はjavaの中で高いjavaの中で記号のないタイプのブールタイプよりも高く、C++ではboolean、javaではboolean、C++ではboolと整形値を使用して相互に変換することができ、ゼロ値ではtrue、ゼロはfalse.定数、javaではfinal、C++でconstを用いる.
配列と文字列
はいれつ
C++定義:静的配列:データ型配列名[定数式]例えばint a[20]動的配列:int*a=new int[20];//20変数java定義:int[]a=new int[20];//このうち20は変数C++に動的配列と静的配列の2種類があり、静的配列はスタックに格納され、動的配列はスタックに格納され、javaの配列はnewを使用してスタックに格納される.
配列小知識点
配列名とポインタ、ポインタ定数の異同点:1.C++は配列銘を最初の要素のアドレスとして解釈するが、int a[20];cout<< sizeof a<< endl; 結果は、ポインタがメモリサイズを占めるのではなく、配列がメモリサイズを占めることになります.2.aは他のデータを指すためには使用できません.この点はポインタ定数と同じです.3.配列名を関数ヘッダまたは関数プロトタイプに使用する場合、配列名とポインタは同じ役割を果たします.たとえば、int sumOfArr(int arr[])とint sumOfArr(int*arr)の2つに違いはありません.すなわち、配列名をパラメータとして使用し、実際に渡されるポインタも1つです.関数内でsizeofを使用する場合は、配列のサイズではなくポインタがメモリのサイズを占めるため、sizeof(配列名)/sizeof(データ型)で配列内のデータ個数を得ることもできません.Javaのように、万物はクラスではなく、配列やlengthが使えます.したがって、関数パラメータとして配列を使用する場合、通常、パラメータ伝達配列の長さを追加します.
文字列
C++の文字列には、C言語を継承するものと、C++の文字列があります.C言語の文字列:char dog[]=「dog」;cout<< sizeof dog<< endl;//結果は3ではなく4でchar dog[]={‘d’,‘o’,‘g’,‘0’};//文字列には、末尾に1つの'0'が追加されます.C++の文字列:string dog="dog";違い:C言語スタイルの文字列使用方法はstrlen,strcpy,strcat,strcmp C++文字列stringクラスのlength()メソッドを使用して長さを取得し、コピーする場合はstring dogs=dogのように直接等号でコピーすればよい.このときdogsとdogは2つのオブジェクトであり、互いに干渉しない.ピンイン文字列C++スタイルはjavaスタイルと一致し、直接+番号でピンインすればよい.stringクラスには+号演算子が再ロードされているため、compareメソッドを比較します.
ポインタとリファレンスの基本的な説明
ししん
ポインタの基本
int cat = 5; int *pt = &cat;//ポインタ初期化使用&アドレスpt=10;//修正ポインタで指定した値
long * fellow;//ポインタが初期化されていないとbug*fellow=2323になります.
以上、ポインタを変数のアドレスに初期化しました.変数はコンパイル時に割り当てられた名前付きメモリですが、ポインタは名前で直接アクセスできるメモリに別名を提供するだけです.ポインタの本当の用途は、実行フェーズで名前のないメモリを割り当てて値を格納し、C++でnew演算子を使用して実装することです.
newは使用時にdeleteと協力して、newはメモリを申請し、deleteはメモリを解放し、deleteはnew申請のメモリを解放するのにしか使用できず、変数を解放して得られたメモリを解放するのに使用できない.int * pt = new int; delete pt;//変数が占めるメモリshort*ps=new shortを解放する[500];/.メモリdelete[]ps;//を申請する配列のメモリを解放
ポインタ演算
≪定義|Definition|oraolap≫:ポインタ変数に1を加算すると、その値が指定したタイプのバイト数に等しくなります.
例:
参照変数:定義された変数の別名.int cat; int & tiger = cat;//虎を猫の別名とするcout<
参照とポインタの違い:
リファレンスは宣言時に初期化する必要がありますが、ポインタは必要ありません.参照とポインタ定数は比較的近いので、ポインタ定数も作成時に初期ハッチングする必要があります.ポインタ定数:int*const pの定数です.定数ポインタ:定数const int*pを指すポインタ.int const * p;
参照の役割:
役割1:参照を関数パラメータとして使用し、参照伝達によって呼び出された関数が呼び出し関数の変数にアクセスできるようにする.通常の値別転送により、呼び出された関数が呼び出しプログラムの値を使用するコピーが発生します.作用はポインタと似ています.役割2:参照を関数として返します.構造の参照を返すと、返される構造は、再コピーされた新しい構造ではなく、元の受信構造である.例:double m=sqrt(16.0);値4.0は、一時的な位置にコピーされ、変数mにコピーされ、その間に一時的な変数が生成されます.戻り値が参照である場合、一時的な位置にコピーする必要はなく、戻る参照変数を直接mにコピーする.
ポインタと参照が戻り値として使用される場合に注意してください.
例:int*getInt(){int a=10;return&a;}
int & getInt(){ int a = 10; return a; }
以上の2つの例はいずれも警告し,1つ目の例のa変数が解放されるとポインタが野ポインタとなり,2つ目の例で参照された変数も解放される可能性がある.
C++関数パラメータ伝達
C++関数パラメータの伝達には、値による伝達、アドレスによる伝達、参照による伝達の3つの方法があります.
値による転送:
アドレス別転送:
参照による転送:
3つの方法でシーンを使用します.
変更せずに渡された値を使用する関数:データ・オブジェクトが配列の場合、ポインタを使用し、ポインタを定数ポインタデータ・オブジェクトが大きいと宣言する構造では、constポインタまたはconstリファレンスを使用します.データ・オブジェクトがクラス・オブジェクトの場合、constリファレンスを使用して呼び出し関数のデータを変更する関数です.データが組み込みデータ型の場合、ポインタを使用配列の場合、ポインタのみを使用できます.データ・オブジェクトが構造の場合、ポインタまたは参照を使用します.データ・オブジェクトがクラス・オブジェクトの場合、参照を使用します.
C++基本タイプ最小記憶空間boolタイプchar文字型8ビットwchar_t幅文字型16ビットshort短整型16ビットint整形16ビットlong長整形32ビットfloat単精度浮動小数点型6ビット有効デジタルdouble二精度浮動小数点型10ビット有効デジタルlong double拡張精度浮動小数点型10ビット有効デジタル符号なし型を得るにはunsignedタイプを指定する必要があります.例えばunsigned long
比較java
JAvaのデータの範囲はjavaを実行する機械とは関係ありませんが、C++では、プログラムはシステム、プロセッサ、コンパイラを使わないことによってサイズを選択し、効率はjavaの中で高いjavaの中で記号のないタイプのブールタイプよりも高く、C++ではboolean、javaではboolean、C++ではboolと整形値を使用して相互に変換することができ、ゼロ値ではtrue、ゼロはfalse.定数、javaではfinal、C++でconstを用いる.
配列と文字列
はいれつ
C++定義:静的配列:データ型配列名[定数式]例えばint a[20]動的配列:int*a=new int[20];//20変数java定義:int[]a=new int[20];//このうち20は変数C++に動的配列と静的配列の2種類があり、静的配列はスタックに格納され、動的配列はスタックに格納され、javaの配列はnewを使用してスタックに格納される.
配列小知識点
配列名とポインタ、ポインタ定数の異同点:1.C++は配列銘を最初の要素のアドレスとして解釈するが、int a[20];cout<< sizeof a<< endl; 結果は、ポインタがメモリサイズを占めるのではなく、配列がメモリサイズを占めることになります.2.aは他のデータを指すためには使用できません.この点はポインタ定数と同じです.3.配列名を関数ヘッダまたは関数プロトタイプに使用する場合、配列名とポインタは同じ役割を果たします.たとえば、int sumOfArr(int arr[])とint sumOfArr(int*arr)の2つに違いはありません.すなわち、配列名をパラメータとして使用し、実際に渡されるポインタも1つです.関数内でsizeofを使用する場合は、配列のサイズではなくポインタがメモリのサイズを占めるため、sizeof(配列名)/sizeof(データ型)で配列内のデータ個数を得ることもできません.Javaのように、万物はクラスではなく、配列やlengthが使えます.したがって、関数パラメータとして配列を使用する場合、通常、パラメータ伝達配列の長さを追加します.
文字列
C++の文字列には、C言語を継承するものと、C++の文字列があります.C言語の文字列:char dog[]=「dog」;cout<< sizeof dog<< endl;//結果は3ではなく4でchar dog[]={‘d’,‘o’,‘g’,‘0’};//文字列には、末尾に1つの'0'が追加されます.C++の文字列:string dog="dog";違い:C言語スタイルの文字列使用方法はstrlen,strcpy,strcat,strcmp C++文字列stringクラスのlength()メソッドを使用して長さを取得し、コピーする場合はstring dogs=dogのように直接等号でコピーすればよい.このときdogsとdogは2つのオブジェクトであり、互いに干渉しない.ピンイン文字列C++スタイルはjavaスタイルと一致し、直接+番号でピンインすればよい.stringクラスには+号演算子が再ロードされているため、compareメソッドを比較します.
ポインタとリファレンスの基本的な説明
ししん
ポインタの基本
int cat = 5; int *pt = &cat;//ポインタ初期化使用&アドレスpt=10;//修正ポインタで指定した値
long * fellow;//ポインタが初期化されていないとbug*fellow=2323になります.
以上、ポインタを変数のアドレスに初期化しました.変数はコンパイル時に割り当てられた名前付きメモリですが、ポインタは名前で直接アクセスできるメモリに別名を提供するだけです.ポインタの本当の用途は、実行フェーズで名前のないメモリを割り当てて値を格納し、C++でnew演算子を使用して実装することです.
newは使用時にdeleteと協力して、newはメモリを申請し、deleteはメモリを解放し、deleteはnew申請のメモリを解放するのにしか使用できず、変数を解放して得られたメモリを解放するのに使用できない.int * pt = new int; delete pt;//変数が占めるメモリshort*ps=new shortを解放する[500];/.メモリdelete[]ps;//を申請する配列のメモリを解放
ポインタ演算
≪定義|Definition|oraolap≫:ポインタ変数に1を加算すると、その値が指定したタイプのバイト数に等しくなります.
例:
short tell[10];
cout< cout<
, tell , (sizeof tell ),&tell ,tell+1 2 ,&tell+1 20 。
参照参照変数:定義された変数の別名.int cat; int & tiger = cat;//虎を猫の別名とするcout<
参照とポインタの違い:
リファレンスは宣言時に初期化する必要がありますが、ポインタは必要ありません.参照とポインタ定数は比較的近いので、ポインタ定数も作成時に初期ハッチングする必要があります.ポインタ定数:int*const pの定数です.定数ポインタ:定数const int*pを指すポインタ.int const * p;
参照の役割:
役割1:参照を関数パラメータとして使用し、参照伝達によって呼び出された関数が呼び出し関数の変数にアクセスできるようにする.通常の値別転送により、呼び出された関数が呼び出しプログラムの値を使用するコピーが発生します.作用はポインタと似ています.役割2:参照を関数として返します.構造の参照を返すと、返される構造は、再コピーされた新しい構造ではなく、元の受信構造である.例:double m=sqrt(16.0);値4.0は、一時的な位置にコピーされ、変数mにコピーされ、その間に一時的な変数が生成されます.戻り値が参照である場合、一時的な位置にコピーする必要はなく、戻る参照変数を直接mにコピーする.
ポインタと参照が戻り値として使用される場合に注意してください.
例:int*getInt(){int a=10;return&a;}
int & getInt(){ int a = 10; return a; }
以上の2つの例はいずれも警告し,1つ目の例のa変数が解放されるとポインタが野ポインタとなり,2つ目の例で参照された変数も解放される可能性がある.
C++関数パラメータ伝達
C++関数パラメータの伝達には、値による伝達、アドレスによる伝達、参照による伝達の3つの方法があります.
値による転送:
void swapv(int a, int b){
int temp;
temp = a;
a = b;
b = temp;
}
アドレス別転送:
void swapp(int *p, int *q){
int temp;
temp = *p;
*p = *q;
*q = temp;
}
参照による転送:
void swapr(int &a, int &b){
int temp;
temp = a;
a = b;
b = temp;
}
3つの方法でシーンを使用します.
変更せずに渡された値を使用する関数:データ・オブジェクトが配列の場合、ポインタを使用し、ポインタを定数ポインタデータ・オブジェクトが大きいと宣言する構造では、constポインタまたはconstリファレンスを使用します.データ・オブジェクトがクラス・オブジェクトの場合、constリファレンスを使用して呼び出し関数のデータを変更する関数です.データが組み込みデータ型の場合、ポインタを使用配列の場合、ポインタのみを使用できます.データ・オブジェクトが構造の場合、ポインタまたは参照を使用します.データ・オブジェクトがクラス・オブジェクトの場合、参照を使用します.